例外処理
例外処理は、プログラム実行の通常の流れを遮断する(例えば、認識されないメッセージなど)、非定型イベントを管理するプロセスです。適切なエラー処理がないと、非定型イベントに遭遇したプログラムは、例外 として知られているものをすぐに投げる(あるいは上げる)事で終了するのが最も可能性が高いです。
例外の種類
例外は、ソフトウェアだけでなくハードウェアによっても、投げられる理由は様々なものがあります。例としては、(実装されていないメソッドを呼び出そうとするような) 未定義命令を呼び出たり、範囲外のコレクション要素にアクセスしようとしたり、ゼロで割ったり、アンダーフローやオーバーフローなどの算術エラーが含まれます。
コンパイラディレクティブを使用した例外処理
例外処理をサポートする、コンパイラディレクティブが4つあります。
- @try ブロックは、潜在的に例外を投げるコードを囲みます。
- @catch() ブロックは、@try. ブロックで投げられた例外のための例外処理ロジックを含んでいます。さまざまなタイプの例外をキャッチするために複数の @catch() ブロックを設けることができます。
- @finally ブロックは、例外が投げられているかいないか、実行されなければならないコードを含んでいます。
- @throw ディレクティブは、基本的に Objective-C のオブジェクトであり、例外を発生します。通常は、NSException オブジェクトを使用しますが、必須ではありません。
以下の例では、例外を発生させる可能性のあるコードを実行するときにディレクティブを使用する方法を示します。
Cup *cup = [[Cup alloc] init]; @try { [cup fill]; } @catch (NSException *exception) { NSLog(@"main: Caught %@: %@", [exception name], [exception reason]); } @finally { [cup release]; }
信号伝達のエラー
例外は、一般的に、プログラミングの流れを制御したり、エラーを示すために、ココアとココアタッチアプリでは、このように例外は使用していませんが、多くのプログラミング環境で使用されています。代わりに、エラーが発生したことを示すためのメソッドまたは関数の戻り値を使用し、エラー·オブジェクト内の問題に関する情報を提供すべきです。詳細については、エラー処理プログラミング·ガイド を参照してください。
前提条件の記事
(なし)
関連記事
(なし)
既出の議論
例外プログラミングのトピック
次の章
前の章