Revised: Mar./21st/2002: Since: Jan./27th/2002
以上見てきたとおり、コーディング時に想定されていない状況で実行されたときには例外が発生します。この例外はオブジェクトですから、元になる例外クラスを明示的にインスタンス化して例外オブジェクトを作ることができます。
全ての例外は java.lang.Exception のサブクラスであり、各々のパッケージで利用されているクラスに応じて継承されています。そして、インタフェースで例外が発生すると定義されている場合などに、プログラマが例外クラスを明示的にインスタンス化してオブジェクトを throw することがあります。
Exception クラスのコンストラクタException() Exception(String s)
二つ目のコンストラクタでは、メッセージを指定することが出来ます。
ExcepTest.java:
class Msg {
private String msg;
void setMsg(String arg) throws Exception {
if (!arg.equals("こんにちは")) {
Exception excepObj = new Exception("挨拶がなっていない!");
throw excepObj;
} else {
msg = arg;
}
}
String getMsg() {
return msg;
}
}
class ExcepTest {
public static void main(String[] args) {
Msg obj = new Msg();
try {
obj.setMsg("こんにちは");
System.out.println(obj.getMsg());
} catch (Exception e) {
System.out.println(e);
}
try {
obj.setMsg("さようなら");
System.out.println(obj.getMsg());
} catch (Exception e) {
System.out.println(e);
}
}
}
Msg クラスに定義した setMsg() は、メソッド引数が「こんにちは」ではない場合には例外を返します。
このクラスを ExcepTest クラスの main() メソッドでインスタンス化しています。
C:\Java\Excep>javac ExcepTest.java C:\Java\Excep>java ExcepTest こんにちは java.lang.Exception: 挨拶がなっていない!