- PR -

Loggerがinterrupt()されたときの例外処理

1
投稿者投稿内容
ちの
会議室デビュー日: 2003/02/05
投稿数: 4
投稿日時: 2003-03-26 10:14
あるスレッドがLoggerクラスのログ出力メソッド(finest()等)を呼び出し中に、別のスレッドからそのスレッドをinterrupt()すると、ログ出力中のスレッドでcatchできない例外が発生して画面にスタックトレースがこんな感じで出力されます。

java.util.logging.ErrorManager: 2
java.io.InterruptedIOException
at java.io.FileOutputStream.writeBytes(Native Method)
at java.io.FileOutputStream.write(FileOutputStream.java:257)
at java.io.BufferedOutputStream.flushBuffer(BufferedOutputStream.java:69)
at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:127)
at java.util.logging.FileHandler$MeteredStream.flush(FileHandler.java:143)
at sun.nio.cs.StreamEncoder$CharsetSE.implFlush(StreamEncoder.java:408)
at sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:150)
at java.io.OutputStreamWriter.flush(OutputStreamWriter.java:213)
at java.util.logging.StreamHandler.flush(StreamHandler.java:224)
at java.util.logging.FileHandler.publish(FileHandler.java:544)
at java.util.logging.Logger.log(Logger.java:424)
at java.util.logging.Logger.doLog(Logger.java:446)
at java.util.logging.Logger.log(Logger.java:469)
at java.util.logging.Logger.finest(Logger.java:1048)

logger.finest()などをtry/catchで囲うと、「exception java.lang.InterruptedException is never thrown in body of corresponding try statement」とエラーが出てコンパイルが失敗します。この例外を捕まえるか、loggerから戻るまで例外の発生を遅延させるようなことは可能でしょうか?
ThreadGroup.uncaughtException()を上書きする程度でしょうか?「どうせ死ぬスレッドなんだから」という考え方もあるかもしれませんが、可能なら例外での強制終了ではなく綺麗にスレッドを終了させたいと考えています。

SDKは1.4.1_02を使っています。よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)