「基本-例外」の編集履歴(バックアップ)一覧に戻る

基本-例外 - (2008/10/27 (月) 14:21:07) のソース

*基本 例外

1.例外処理基本
-発生した例外がcatchに見つからない場合、コール元のcatchを探す。(自動ネストになる)
-catchブロックは、処理したい例外の数分、複数ブロック記述できる
-catchで処理できない例外が発生した場合、プログラムエラー終了
-catchブロック以降の処理は、tryブロックが正常に進んだ後、またはtryで例外が発生しchatchブロックの処理が終わった後に実行される。
-通常、例外のクラス=catchする例外(クラス)名、変数名=e
try {
  例外の発生が予測される文;
  ・・・
}
catch(例外のクラス 変数名){
  例外が起きたときに処理;
  ・・・
}

2.例外処理finally
-finallyブロックは、tryが正常、tryで例外発生しcatchで処理、tryで例外が発生しcatchせずのいずれのパターンでも必ず最後に実行される。
try {
  例外の発生が予測される文;
  ・・・
}
catch(例外のクラス 変数名){
  例外が起きたときに処理;
  ・・・
}
finally{
  必ず最後に処理;
}

3.例外クラス
-例外はjava.langのThrowableクラスのサブクラスのオブジェクト。それ以外は受け取れない。
-クラス階層
  Throwable--+--Error
             +--Exception--+--IOException  etc.
                           +--RuntimeException --+-- 
-Errorはプログラムが実行不能となるエラー。例外処理対象外。
-Exceptionは例外処理対象。最上位のため、このクラスを指定するとすべての例外をcatch可。

4.例外スルー
-Throwableクラスのサブクラスを拡張して例外クラスを宣言
class AbcException extends Exception
{
}
-例外スルーメソッド宣言
戻り値の型 メソッド名(引数リスト) throws 例外クラス
-例外スルー
throw 例外オブジェクト変数;
public void abc(int a) throws AbcException
{
  if(条件){
    AbcException e = new AbcException();
    throw e;
  }
}

5.例外を上位に報告
-例外をそのまま上位にスルー
public void def(int x) throws AbcException
{
  例外の発生が予測される文;
}

6.例外処理まとめ
-メソッドの例外処理は2つ
+ try~catchを使用して、メソッド内で例外処理
+ throwsで上位メソッドに例外を報告。上位おまかせ。

7.例外処理が不要なクラス
-Errorのサブクラス:プログラムの実行停止
-RuntimeExceptionのサブクラス:上の同じ理由か?





 
記事メニュー
目安箱バナー