問題タブ [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.

0 投票する
1 に答える
2161 参照

java - Java 7 を使用するように NetBeans プロジェクトのプロパティを設定する方法は?

私は NetBeans を初めて使用し、以前は Eclipse を使用していました。さまざまな Java EE の概念を学ぶ必要があるため、NetBeans を使い始めました。また、NetBeans IDE に関連するより関連性の高いチュートリアルを見つけました。EE の抽象的な概念の多くはまだ私を混乱させています。

しかし、私は行き止まりに遭遇しました。Web サービス クライアントのセットアップに関するこのチュートリアルに従っています。ただし、行の 1 つには、java 7 で新しく追加された try-with-resource ステートメントが含まれています。

ここに画像の説明を入力


このチュートリアルを開始したとき、私は Netbeans 7.1.3 と Glassfish 3.1.2 を使用していました。EE7 をサポートしていないことはわかっていたので、NetBeans 8.0.1 と Glassfish 4.1 をダウンロードしました。後で、try-with-resources が SE の一部であることに気付きました。私のアップグレードは、この問題に関して冗長でした。

プロジェクトの設定に何か問題があると思ったので、右クリックしてプロパティを開きました。Libraries オプションの下で、JDK が Java 1.7 (update 51) に正しく設定されていることがわかりました。ここに写真:

ここに画像の説明を入力


その他のオプションも確認したところ、Glassfish 4.1 がサーバーとして選択されていても、Run の下で Java EE が 6 に設定されていることがわかりました。これは EE7 の実装だと思いましたが、オプションは EE6 にロックされています。これは私を少し混乱させますが、問題の原因ではありません。関連する場合に備えて、まだその写真を添付し​​ています。

ここに画像の説明を入力

では、このプロジェクトの Java 設定の何が問題になっているのでしょうか? Java 7 を使用するように設定されているように見えるのに、Java 7 機能を受け入れられないのはなぜですか? Javaバージョン/ホームを設定する必要がある他の場所はありますか?

0 投票する
3 に答える
11728 参照

java - java.lang.AutoCloseable の close メソッドは例外をスローするのに、java.io.Closeable の close メソッドは IOException をスローするのはなぜですか?

私はこのリンクを読んでいましたが、次のように書かれtry-with-resourcesています:

Closeableインターフェイスの close メソッドは type の例外をスローIOExceptionし、インターフェイスの close メソッドはtype のAutoCloseable例外をスローしますException

しかし、なぜ?の close メソッドAutoCloseableもスローされた可能性があるタイプの例外をスローする必要IOExceptionがあるの close メソッドをサポートする例はありますAutoCloseableException

0 投票する
3 に答える
9736 参照

java - java.nio.file.FileSystemException: /proc: 開いているファイルが多すぎます

このコードを使用して、proc ファイルシステム内のすべてのフォルダーを読み取ります

しばらくすると、このエラーが発生します

このループはファイルを閉じずに開いているようです。各サイクルの実行後にファイルを閉じる方法はありますか?

0 投票する
0 に答える
834 参照

java - Try-with-resources ストリームが予期せず終了しました

ビジネス オブジェクトをファイルに書き込むための次のコード セットがあります。書き込みは通常 2 つの部分で行われますが、writeTrxここで -helper は一時ファイルの書き込みと名前変更の両方を行います。

しかし、私は時々これから得ますjava.nio.channels.ClosedChannelException

それは私を当惑させます。close が呼び出されたときにのみObjectOutputStream がストリームを閉じるような呼び出し構造でチャネルを閉じるにはどうすればよいですか?

私の理解では、ストリーム内ではなく、内部の writeTrx-call が返されるときに、ストリームをできるだけ早く閉じる必要があります。

0 投票する
2 に答える
53929 参照

java - Try-With-Resources を Catch や Final なしで作成する理由

次の例のように、Try without a Catch または Final と書くのはなぜですか?

0 投票する
5 に答える
27436 参照

java - Try With Resources vs Try-Catch

私はコードを見てきましたが、リソースを試してみました。以前に標準の try-catch ステートメントを使用したことがありますが、同じことをしているように見えます。したがって、私の質問は、Try With Resources と Try-Catch の違いと、どちらが優れているかです。

リソースを試してみてください:

0 投票する
1 に答える
217 参照

junit - Byteman JUnit Runner - 自動クローズされた InputStream#close で IOException をトリガーできない

私は次のコードを持っています:

私が与える(有効な)入力ストリームが閉じていると思われるときに、Byteman Junit RunnerでIOExceptionをトリガーしようとしています:

私のテストは失敗します: エラーは常に空です。これは明らかに Byteman ルールが実行されていないことを意味します (エージェントによって十分にロードされているため、何が起こっているのかわかりません)。

try-with-resources を介して呼び出された close メソッドで IOException をトリガーするにはどうすればよいですか?

0 投票する
2 に答える
1749 参照

java - 本体とは別に、try-with-resources からのオブジェクト構築中のエラーをキャッチします

概要

私はクローズ可能な型を持っています。CloseableClassこれは、コンストラクター、メソッド、さらには内部で IOError をスローできますclose。私は try-with-resources を使用し、構築中のエラーを使用中のエラーとは異なる方法で処理したいと考えています (使用にはクリーンアップが含まれます)。さらに良いことに、保守可能なコードを書きたいと思っています。


クローズ可能なクラス インスタンスを構築し、それを try-with-resources ステートメントで使用したいとします。IOExceptionコンストラクターと、try-with-resources の本体で使用されるメソッドの両方をスローできます。

コンストラクターと本体でスローされたエラーを別々に処理したいとします。それを行うためのサポートされている方法はありますか? Python では、次のようにします。

ただし、Java では、オブジェクトに 2 番目の名前を割り当てないとできません。

これは主に の使用による「保守不可能なコード」であると言われましたがcloseable_、私はそうは思いません。それをエミュレートするというさらに悪い問題があるため、try-finally の使用は避けたいと思います。

closeこれには、テストクラスが従わないノーオペレーションであるために2回目の呼び出しが必要であることに注意してください(AutoCloseableこれは必要ではありませんが、必要ですCloseable)。closeこれは、投げられない場合は少し良くなりますが、それほどではありません。

基本的に問題は、

  • close投げることができます
  • IOException重印刷を防ぐために対処する前に閉じる"Body error!"
  • try-with-resources の複数の初期化子で機能させる方法は明らかではありません
  • とにかくコードを複製することになります。

「保守不可能なコード」で生活することを余儀なくされていますか、それともこれに対処するための良い方法を見落としていますか?