例外をcatchした後でif文を使って内容をチェックし、 目的外の例外オブジェクトだったら再びthrowする方法もあるが、 条件付きcatchを使用することで、もっと簡潔に記述できる。
1. 実行するスクリプト(catch-if.js):
var stdout = java.lang.System.out;
var fileName = "<no file>";
try {
new java.io.FileInputStream(fileName); // FileNotFoundException
} catch (e if e.javaException instanceof java.io.FileNotFoundException) {
stdout.println("file not found");
}
try {
new java.lang.Class.forName(null); // NullPointerException
} catch (e if e.javaException instanceof java.lang.ClassNotFoundException) {
stdout.println("class not found");
} catch (e) {
stdout.println(e);
}
2-1. Rhino1.7で実行する:
>java -classpath .;js.jar org.mozilla.javascript.tools.shell.Main -w -debug catch-if.js
file not found
JavaException: java.lang.NullPointerException: null
2-2. jrunscript(Java1.7)で実行すると、結果はRhino1.7と同じ:
>jrunscript catch-if.js
file not found
JavaException: java.lang.NullPointerException: null
0 件のコメント:
コメントを投稿