// 入出力例外をスローしないclose()
function doClose(stream) {
if (stream) {
try {
stream.close();
} catch(e) {
// 入出力例外をダンプ?
java.lang.System.err.println(e);
}
}
}JavaScriptはJavaよりも幅広くcatchするということを忘れていた。
function doClose(stream) {
// 使い方次第ではCloseableかどうか調べた方が確実かも
if (stream) {
try {
stream.close();
} catch(e if e.javaException instanceof java.io.IOException) {
// 入出力例外だけcatchして出力する
var err = java.lang.System.err;
err.println(e.message);
err.println(e.stack);
}
}
}今使っている書き捨てスクリプトで問題なく動いている。(2012-09-19: 条件付きcatchを使うように変更した。変更前は、スローされたオブジェクトを全てcatchして目的外のオブジェクトなら再スローするように記述していたが、これは冗長だった)
0 件のコメント:
コメントを投稿