catchブロックには必ずThrowable型のパラメータが1つなければいけません。
Throwableはすべての例外、エラークラスのスーパークラスです。
Throwableコンストラクタ
#codeprettify{{ Throwable() Throwable(String message); }}
引数 | 説明 |
message | 問題を通知する文字列メッセージです。 |
関数 | 説明 |
String getMessage() | コンストラクタから提供される文字列を取得する |
void printStackTrace() | スタック情報を表示する |
ErrorクラスはThrowableクラスを拡張します。
ErrorクラスにはJVMで検出される重大な問題を表すサブクラスが10以上あります。
ExceptionクラスはThrowableクラスを拡張します。
Exceptionは実行時に発生する様々な問題を表すサブクラスがあります。
Exceptionコンストラクタ
#codeprettify{{ Exception() Exception(String message) }}
引数 | 説明 |
message | 問題を通知する文字列メッセージです。 |
クラス | 説明 |
ClassNotFoundException | クラスが見つからない |
IllegalAccessException | クラスに不正にアクセスしました |
InstantiationException | インターフェイス、または抽象クラスをインスタンス化しようとした |
NoSuchFieldException | フィールドが見つからない |
NoSuchMethodException | メソッドが見つからない |
RuntimeException | 実行時に例外が発生した |
RuntimeExceptionクラスはExceptionのもっとも重要なサブクラスです。
RuntimeExceptionのサブクラス
クラス | 説明 |
ArrayIndexOutOfBoundsException | 配列のインディックスが実在しない要素を指した |
ArithmeticException | 算術例外が発生した(0除算など) |
ClassCastException | 不正なキャストを試みた |
NegativeArraySizeException | 配列のサイズとして負の値を使った |
NullPointerException | 空のオブジェクトのフィールド、またはメソッドにアクセスを試みた |
NumberFormatException | 整数の形式が不正だった |
SecurityException | セキュリティ違反のため操作が拒否された |
StringIndexOutBoundsException | 文字列のインディックスが文字列の領域をはみ出した |
例
#codeprettify{{ class PrintStaticTraceDemo{
public static void main(String args[]){ try{ a(); }catch(ArithmeticException e){ e.printStackTrace(); //スタック情報の表示 } }
public static void a(){ try{ b(); }catch(NullPointerException e){ e.printStackTrace(); //スタック情報の表示 } }
public static void b(){ try{ c(); }catch(NullPointerException e){ e.printStackTrace(); //スタック情報の表示 } }
public static void c(){ try{ d(); }catch(NullPointerException e){ e.printStackTrace(); //スタック情報の表示 } }
public static void d(){ try{ int i = 1; int j = 0; System.out.println(i/j); //ここでエラーが発生する。 }catch(NullPointerException e){ e.printStackTrace(); //スタック情報の表示 } }
} }}
結果
java.lang.ArithmeticException: / Zero at PrintStackTraceDemo.d(PrintStackTraceDemo.java:43) at PrintStackTraceDemo.c(PrintStackTraceDemo.java:32) at PrintStackTraceDemo.b(PrintStackTraceDemo.java:23) at PrintStackTraceDemo.a(PrintStackTraceDemo.java:25) at PrintStackTraceDemo.main(PrintStackTraceDemo.java:5)