多分質問は少し「奇妙」です。しかし、 PrintWriterとPrintStreamの両方が実行時例外を自動的にチェックせず、checkError()メソッドを提供する理由を知りたいです。
よろしくお願いします。
多分質問は少し「奇妙」です。しかし、 PrintWriterとPrintStreamの両方が実行時例外を自動的にチェックせず、checkError()メソッドを提供する理由を知りたいです。
よろしくお願いします。
std outまたはerrに書き込むことが多いPrintStreamの場合、これらのストリームは閉じられているか破棄されている可能性がありますが、結果としてプログラムが予期せず失敗することは望ましくありません。
PrintWriterは多くの点でPrintStreamのWriterバージョンですが、PrintStreamの間違いを繰り返すのが良い考えであったかどうかはわかりません。;)
PrintWriterがIOExceptionを報告しないという事実は、接続が失敗したことを知る必要があるソケットにテキストを書き込むための不適切な選択になります。
主に System.err が PrintStream であるためだと思います。
catch ブロックで例外を処理している場合、e.printStackTrace() を呼び出すのが一般的で、System.err に書き込みます。その呼び出しで例外がスローされた場合、元の例外が失われ、代わりにコードから PrintStream エラーがスローされます。その場合、その問題を防ぐために catch ブロック内に追加の try/catch が必要になり、大きな混乱が生じます。
JDK 1.7 は、catch ブロックから例外をスローする問題に対処し、両方の例外にアクセスできるようにすることに注意してください。