- 例外の種類
Error: 重大例外(回復不能)
Exception: catch必須、プログラムで回避不可能
RuntimeException: catch必須ではない、プラグラムで回避可能 - 呼び出し元で処理する例外があるメソッドでは、定義に throwsを付加
この場合、メソッド内では該当例外のcatch処理不要
ただし、スーパー例外クラスをcatchしている場合にはcatchしないとそちらで処理されてしまうので、catch→throwが必要。
内部処理が伴う場合も、catch→内部処理→throw。 - try,catch,finally節
catch節は例外クラスごとに複数記述可能
複数記述で重複一致時は先に記述されている節で処理する
→上位クラスでのcatchを先に書くと到達不能catch節としてコンパイルエラーとなる
finally節はひとつだけ、正常/異常時ともに実施する処理を記述(close処理など)
finally節にreturn文があると異常時もreturnが実行される
→戻り値のある関数では紛らわしい
→基本としてfinally節にはreturn文を書かない - 「コンパイル時にチェックされない例外やエラー」を独自に実装する
java.lang.RuntimeExceptionを継承するのが普通 - 独自に例外を定義する方法
Exceptionクラスを継承
※呼び出し元は例外処理の記述が強制される
※独自の例外クラスを変更した場合、呼び出し元の変更が必要となる場合もある
独自の例外に置き換えてthrowする場合は- 独自例外クラスにはthrowableを引数とするコンストラクタを定義
- 受け取った例外オブジェクトから独自例外クラスobjを作成してthrow
- 例外を使うと処理の流れを変えることができる
条件文のような使い方も可能だが、例外は「例外的な処理が発生したことを通知、捕捉する」という目的のもの
→本来の目的で使用するべき
2008年12月26日金曜日
例外の構成
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿