throwsステートメントを使い独自の例外クラスを作成することができます。
RuntimeExceptionのサブクラス以外の場合は、作成した例外が発生する
可能性のあるメソッドすべてで独自の例外を捕獲する必要があります。
例
#codeprettify{{ import java.util.*;
class ExceptionSubclass{
public static void main(String args[]){ a(); }
static void a(){ try{ b(); }catch(Exception e){ e.printStackTrace(); } }
static void b() throws Exception{ try{ c(); }catch(ExceptionB e){ e.printStackTrace(); } }
static void c() throws ExceptionA, ExceptionB{ Random random = new Random(); int i = random.nextInt(); if (i % 2 == 0){ //独自例外ExceptionAを作成 throw new ExceptionA("We have a problem"); }else{ //独自例外ExceptionBを作成 throw new ExceptionB("We have a big problem"); } }
}
class ExceptionA extends Exception{
public ExceptionA(String message){ super(message); }
}
class ExceptionB extends Exception{
public ExceptionB(String message){ super(message); }
} }}
結果
ExceptionA: We have a problem at ExceptionSubclass.c(exceptionsubclass.java:40) at ExceptionSubclass.b(exceptionsubclass.java:26) at ExceptionSubclass.a(exceptionsubclass.java:14) at ExceptionSubclass.main(exceptionsubclass.java:7)