ログアウト

エラー関連

エラーを通知するthrow処理

 処理の途中でエラーが発生した際にはそのエラーを通知し、エラーごとに適した処理をプログラマが行えるようにするための仕組みがSwiftには用意されています。エラー発生時の処理の流れのイメージ図を見てみましょう。

エラー発生時の処理の流れ

 この図では、エラー発生時の処理を関数Aに記述しているので、関数Cのthrow処理は、関数Aに通知されます。関数Cのようなthrow処理を行う可能性がある関数は、次のように記述します。

 実際にthrow処理を行うには、次の書式で記述します。

 エラータイプのプロトコルに準拠したenumとしては、Errorプロトコルに準拠した独自のエラータイプを用意する必要があります。enumについては2-3節で、プロトコルについてはレクチャー5で紹介しています。
ではコード例を見ておきましょう。Errorプロトコルに準拠したenumであるMyErrorというenumを宣言し、引数valueの値が「0」よりも小さいときに「InvalidValue」という値のエラーがthrowされる記述になっています。

 

エラーをハンドリングする

 throwsが宣言されている関数を利用する場合は、throwで通知されるエラーをハンドリングする必要があります。エラーをハンドリングするには、対象となる関数をdo ~ try ~ catch文で囲む必要があります。先ほどのthrowを利用した処理に、エラーがあったかどうかで、正常終了したかエラーが発生したかを出力するハンドリングを追加してみます。