# エラーを制御する

# 概要

LINE SDKではいくつかのエラーコードが定義されており、エラーの原因の調査に役立ちます。LINE SDKでは、NSErrorクラスを使ってエラーを表します。

# SDKの内部エラー

SDKから報告される内部エラーとエラーコードはLineSDKInternalErrorCode列挙型で定義されています。これらのエラーによりほとんどの状況が網羅されます。

LineSDKInternalErrorCode エラーコード番号
LineSDKInternalErrorCodeLoginError 1
LineSDKInternalErrorCodeMissingConfiguration 2
LineSDKInternalErrorCodeAuthenticationCanceled 3
LineSDKInternalErrorCodeMissingAccessToken 4
LineSDKInternalErrorCodeInvalidTokenType 5
LineSDKInternalErrorCodeMissingRequiredField 6
LineSDKInternalErrorCodeInvalidValueType 7
LineSDKInternalErrorCodeInvalidJSONWebKeyType 8
LineSDKInternalErrorCodeTokenIDVerificationFailed 9

不明なエラーが発生した場合は、LineSDKInternalErrorCodeUnknownエラーがコード0と共に返されます。

# サーバーレスポンスエラー

サーバーエラーが発生し、LINEプラットフォームから無効なHTTPステータスコードが返された場合、そのコードがエラーコード番号として使用されます。そのようなサーバーエラーはLineSDKServerErrorDomainに属し、そのuserInfoプロパティにはアプリが動作するiOSシステムのエラーオブジェクトと元のレスポンスデータが含まれます。それらの情報は以下のようにして確認できます。

[apiClient getProfileWithCompletion:^(LineSDKProfile *profile, NSError *error) {
    if (error) {
        if ([error.domain isEqualToString:LineSDKServerErrorDomain]) {
            NSLog(@"Response Error. Status Code: %ld", error.code);
            NSLog(@"Underlying Error: %@", error.userInfo[NSUnderlyingErrorKey]);
            NSLog(@"Response Data: %@", error.userInfo[LineSDKServerErrorUserInfoKey]);
        }
    } else {
        // Success Logic.
    }
}];