java - BufferedReader关闭流的问题
PHP中文网
PHP中文网 2017-04-18 09:25:05
0
4
1028
PHP中文网
PHP中文网

认证0级讲师

全員に返信(4)
伊谢尔伦

実際、この問題についてはあまり心配する必要はありません。 JDK1.7 の try-with-resources に依存する必要はありません。
まずリソースを閉じて、try ブロックに入れます。必ず問題が発生します。リソースが閉じられていない可能性があります。
したがって、リソースの終了は 最後に に配置される必要があります。これについては疑いの余地がありません。
finally ブロックの close リソースに関しては、追加の IOE が導入されることになりますが、これは避けられません。
現在 (私が見た限り) ほとんどのコードでは、IOE をキャプチャした後、最大 1 つのログが記録されますが、多くの場合は noop、つまり no です。操作は何もしません
クローズ中に IOE が発生する可能性は非常に低いため、これを無視するのが正しい選択です。リソースのクローズ エラーが原因でシステムの実行が停止することはありません。さらに、この IOE をキャプチャすることに固執する場合、何ができるでしょうか?

finally ブロックに try-catch を導入したくない場合は、guava のクローズ メソッドを参照してください。closeQuietly() というツール メソッドを記述します。騒がないでください。

いいねを押す +0
PHPzhong

ご招待ありがとうございます
Java7 のリソースを試してみることを検討してみてはいかがでしょうか

リーリー

参考

いいねを押す +0
PHPzhong

ロンボク島のアムウェイに来てください。コードを大幅に節約できる強化されたライブラリです。

@CleanUp

いいねを押す +0
大家讲道理

あなたが追加した質問も IDE の問題によるもので、1 階の回答に同意します。

さらに、AutoCloseable インターフェイスと Closeable インターフェイスを実装するリソースの場合は、try-with-resources 構造を使用するのが最善です。

コードを例として取り上げます。一部のコードは省略されています

リーリー

readline と close の両方で io 例外が発生すると仮定します。JDK1.7 より前の例外キャッチ構造を使用すると、close 例外のみがキャッチされ、readline 例外は抑制されます。 (最終的にコードを実行する必要があるため)

別の質問ですが、try-with-resources 内のリソースの AutoCloseable の close メソッドはいつ実行されますか?

try コード ブロックが実行された後に実行されます (実験的なコードはここには掲載されません)。そのため、try-with-resources 構造を使用すると、catch ブロックとfinally ブロックはリソースが閉じられるまで実行されません。 。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!