問題タブ [try-with-resources]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 誤ったリソース リーク警告?
このスニペットの「s」と「p」でリソース リークの警告が表示されます。この警告は有効ですか?
java - リソースで Try-Catch を使用すると IntelliJ IDE がエラーを返す
JDK 7 の「try-catch with resources」ステートメントを使用しようとしています。IntelliJ は私のリソース ラインを強調し、次のように述べています。
リソースの試行は、この言語レベルではサポートされていません。
コンパイルしようとすると、次のようになります。
java: -source 1.6 では try-with-resources はサポートされていません (try-with-resources を有効にするには -source 7 以降を使用してください)
現在のプロジェクトで try-with-resources が有効になっていること、およびプロジェクトが JDK 7 (ライブラリ: C:\Program Files\Java\jdk1.7.0_11) を使用していることを確認しました。何か案は?どのオプションを変更すればよいかわかりません (それが問題である場合)。
java - Java 1.7 でのソケット処理の最新技術とは?
Java 1.7 の適切な機能 ( try-with-resources )を使用して、クライアント/サーバー ソケット通信を実装するための最適なパターンを探しています。すべてのスレッドとリソースが閉じられ、完全に解放されていることを確認する必要があります。効果的な Java /クリーン コード項目と、単純なデバッグ可能性 (各行に 1 つのステートメントのみ) を考慮する必要があります。
フィードバックや議論をいただければ幸いです。
最初のアプローチ
長所:
- コード行の削減
短所:
- 大規模な try-with-resources ブロック (Eclipse フォーマッターではサポートされていません)
- try-with-resources を使用するために必要な2 番目
Socke
の t インスタンス UnknownHostException
fromによる深いネスティングInetAddress#getByName(null)
2 番目のアプローチ
長所:
- きれいで読みやすい try-with-resources ブロック
- Eclipse フォーマッターでのサポート
短所:
- より多くのコード行
- 独自の
Connection
クラスが必要 AutoCloseable
クラス内のインスタンスを閉じるConnection
ことを忘れる可能性があります (エラーが発生しやすい)
長所と短所へのフィードバックや追加はありますか? これ以上の弱点はありますか?
3 番目のアプローチ
それが以下の議論の結果です。
長所:
- コード行の削減
- 複雑で読みやすい try-with-resources ブロックにはノー
- 無視された例外なし
短所:
- Eclipse フォーマッターでのサポートなし
- 「各行に 1 つのステートメントのみ」というルールのいくつかの違反 (単純なデバッグ可能性)
java - ServerSocket は try-with-resources で動作しませんか?
そのため、クラスで ServerSockets をいじって、リクエストを受け取って何もせず、200 OK に続いて HTML コンテンツで応答する非常に単純な HTTP サーバーを作成します。
私はこの問題を 2 日間解こうとしてきましたが、理解できませんでした。先生も理解できませんでした。奇妙な理由で、サーバーを閉じることに問題があると思うようになりました。私は問題を解決しましたが、そもそもなぜ私が起こったのか知りたいのです.
以下に 3 つのスニペットを示します。
HttpServer.class:
動作するMain.class ソリューション:
動作しないMain.class ソリューション:
各ループの反復後にクライアントソケットを閉じないことに関係があると想像できます。それでも、その場合にバグが発生する前に、少なくとも一度は通過する必要があります。問題が何であるかが本当にわかりません。
エラーメッセージも何もありません...
java - 新しい try-with-resources ブロックを使用した SQLException でのトランザクションのロールバック
リソースの試行に問題があり、確認のために質問しています。例外に対応する必要があり、catch ブロックにリソースが必要な場合に使用できますか? 与えられた例はこれです:
この場合、古い try-catch-finally を使用する運命にまだあるのではないかと心配しています。閉鎖されたと宣言した。」
java - java.util.concurrent.locks.Lock の AutoCloseable ラッパーにリスクはありますか?
try-with-resource
が Java 7 で導入されましたが、 が に改造されていないことに驚きましLock
たAutoCloseable
。かなり単純に思えたので、次のように自分で追加しました。
これはAutoCloseableReentrantReadWiteLock
クラスで機能し、使用方法は次のとおりです。
これは自動クローズRAIIの非常に単純で標準的な使用に見えるので、これを行うべきではない正当な理由があるに違いないと考えています。誰か知ってる?
java - try-with-resources がフィールド変数で機能しないのはなぜですか?
これは SO に関する私の最初の質問であり、同様の質問がまだないことに混乱しています!
質問は次のとおりです。
try-with-resources がフィールド変数で機能しないのはなぜですか?
言い換えれば、そのために常にローカル変数が必要なのはなぜですか?
ここにいくつかのサンプルコードがあります:
なぜこの慣習があるのか 誰か説明してもらえますか?