Developer's memo

開発メモ

【iPhone】WebViewのエラーハンドリング

iOSのWebViewでエラーが発生した時の詳細なエラーハンドリングの方法。

 

エラーが起きた時は didFailLoadWithError が実行されるので、そこでアラートなんかを出す処理をするのが定石ですが、なんでもかんでもエラー扱いをしているとユーザ操作により、WEBページの読み込み中止をした場合でもアラートがでてしまったりします。

なので、適切にエラーハンドリングする必要がありそうです。

 

下記で読み込み中止時のアラート表示は防げます。

// Webページ読み込み失敗時
- (void)webView:(UIWebView*)view didFailLoadWithError:(NSError*)error {

         // キャンセルボタン押下時以外
        if([error code] != NSURLErrorCancelled) {
                //アラート表示処理
        }
    
}
 
 
他にも以下の値でエラーをハンドリングできます。
それぞれの意味はAppleのリファレンスを参照。
 
   NSURLErrorUnknown = -1,
   NSURLErrorCancelled = -999,
   NSURLErrorBadURL = -1000,
   NSURLErrorTimedOut = -1001,
   NSURLErrorUnsupportedURL = -1002,
   NSURLErrorCannotFindHost = -1003,
   NSURLErrorCannotConnectToHost = -1004,
   NSURLErrorDataLengthExceedsMaximum = -1103,
   NSURLErrorNetworkConnectionLost = -1005,
   NSURLErrorDNSLookupFailed = -1006,
   NSURLErrorHTTPTooManyRedirects = -1007,
   NSURLErrorResourceUnavailable = -1008,
   NSURLErrorNotConnectedToInternet = -1009,
   NSURLErrorRedirectToNonExistentLocation = -1010,
   NSURLErrorBadServerResponse = -1011,
   NSURLErrorUserCancelledAuthentication = -1012,
   NSURLErrorUserAuthenticationRequired = -1013,
   NSURLErrorZeroByteResource = -1014,
   NSURLErrorFileDoesNotExist = -1100,
   NSURLErrorFileIsDirectory = -1101,
   NSURLErrorNoPermissionsToReadFile = -1102,
   NSURLErrorSecureConnectionFailed = -1200,
   NSURLErrorServerCertificateHasBadDate = -1201,
   NSURLErrorServerCertificateUntrusted = -1202,
   NSURLErrorServerCertificateHasUnknownRoot = -1203,
   NSURLErrorServerCertificateNotYetValid = -1204,
   NSURLErrorClientCertificateRejected = -1205,
   NSURLErrorCannotLoadFromNetwork = -2000,
   NSURLErrorCannotCreateFile = -3000,
   NSURLErrorCannotOpenFile = -3001,
   NSURLErrorCannotCloseFile = -3002,
   NSURLErrorCannotWriteToFile = -3003,
   NSURLErrorCannotRemoveFile = -3004,
   NSURLErrorCannotMoveFile = -3005,
   NSURLErrorDownloadDecodingFailedMidStream = -3006,
   NSURLErrorDownloadDecodingFailedToComplete = -3007
 
 参考