// 入出力例外をスローしない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 件のコメント:
コメントを投稿