検索
ホームページJava&#&ベース自動リソース管理にJavaのリソース付きステートメントを使用するにはどうすればよいですか?

自動リソース管理にJavaのリソース付きステートメントを使用するにはどうすればよいですか?

JavaのリソースWOR-Resourcesステートメントは、使用後に閉じる必要があるファイルストリームやデータベース接続などのリソースの管理を簡素化するように設計されています。このステートメントは、自動リソースブロック管理(ARM)機能の一部としてJava 7で導入されました。

Try-with-resourcesステートメントを使用するには、 try句内でAutoCloseableまたはそのサブCloseableを実装するリソース変数を宣言する必要があります。これらのリソースは、コードのブロックが正常に完了するか例外がスローされているかどうかにかかわらず、ステートメントの最後に自動的に閉じられます。

使用方法の例は次のとおりです。

 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt"); FileOutputStream fos = new FileOutputStream("output.txt")) { // Use the resources byte[] buffer = new byte[1024]; int bytesRead; while ((bytesRead = fis.read(buffer)) != -1) { fos.write(buffer, 0, bytesRead); } } // fis and fos are automatically closed here</code>

この例では、 FileInputStreamFileOutputStream両方がCloseable実装するため、リソース付きのトライアルセットブロック内で使用できます。ブロックが終了すると、これらのストリームは自動的に閉じられ、 finallyブロックが手動で閉じる必要がなくなります。

Javaのリソースでの試行を使用して、どのような種類のリソースを管理できますか?

リソース付きのTry-Resourcesステートメントは、 AutoCloseableインターフェイスを実装する任意のリソースを管理できます。 AutoCloseableは、Javaのベースインターフェイスで、リソースが不要になったときに自動的に呼び出される単一のメソッドclose()を定義します。 CloseableインターフェイスはAutoCloseableを拡張し、I/O操作を扱うリソースに特別に使用されます。

管理できるリソースの一般的なタイプは次のとおりです。

  • ファイルストリームFileInputStreamFileOutputStreamなど、ファイルから読み取りや書き込みに使用されます。
  • データベース接続:データベース操作に使用されるConnectionStatementResultSetオブジェクトなど。
  • ネットワークソケット:ネットワーク通信に使用されるSocketServerSocketなど。
  • カスタムリソースAutoCloseableを実装し、閉鎖する必要があるリソースを管理するカスタムクラス。

AutoCloseable実装することにより、開発者は、リソースを使用して試行ブロック内で使用できる独自のクラスを作成し、適切なリソースのクリーンアップを確保できます。

リソースの試みのステートメントは、コードの読みやすさと保守性をどのように改善しますか?

リソース付きの試みは、いくつかの方法でコードの読みやすさと保守性を向上させます。

  1. ボイラープレートの削減コードfinallyブロックが手動でリソースを閉じる必要性を排除します。これにより、維持するコードが少なくなり、行が少なくなります。
  2. 改善された例外処理:従来のトライキャッチ式ブロックを使用すると、 finallyブロックでの例外処理は、 tryブロックにスローされた例外をマスクまたは干渉することがあります。リソースで試してみると、例外をマスキングせずにリソースが閉鎖されるようにします。
  3. より明確なリソース範囲:TRYステートメントでリソースを直接宣言することにより、どのリソースが管理されているか、それらがどこで使用されているかがすぐに明確になります。
  4. リソースの閉鎖を保証する:リソースの自動閉鎖は、リソースの閉鎖を忘れることに関連する一般的なバグを防ぎ、リソースのリークにつながる可能性があります。

これは、伝統的なものとリソースのあるアプローチを比較する例です。

伝統的:

 <code class="java">FileInputStream fis = null; try { fis = new FileInputStream("input.txt"); // Use fis } catch (IOException e) { // Handle exception } finally { if (fis != null) { try { fis.close(); } catch (IOException e) { // Handle exception from closing } } }</code>

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

 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } // fis is automatically closed</code>

後者ははるかに明確で、リソースを開いたままにする可能性を減らします。

JavaでTry-Resourcesを使用する場合、例外を処理するためのベストプラクティスは何ですか?

Javaでリソースを使用する場合、コードの堅牢性と明確さを維持するために、例外処理のためにベストプラクティスに従うことが不可欠です。

  1. 複数の例外をキャッチする:トライブロック内またはリソースの閉鎖中にスローされる可能性のある異なるタイプの例外をキャッチできます。
 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { // Handle IOException } catch (Exception e) { // Handle other exceptions }</code>
  1. 抑制された例外:リソースの自動クロージング中に例外がスローされ、別の例外がリソースの閉鎖中に発生すると、後者は前者の抑制された例外になります。 getSuppressed()メソッドを使用して、これらの抑制された例外にアクセスできます。
 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { for (Throwable se : e.getSuppressed()) { // Handle suppressed exceptions } }</code>
  1. 例外の再投与:主要な例外を処理する必要があるが、それを再スローする必要がある場合、またはカスタム例外を再スローする場合、抑制された例外を扱っている間にそうすることができます。
 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { for (Throwable se : e.getSuppressed()) { // Handle suppressed exceptions } throw new CustomException("Failed to process file", e); }</code>
  1. ロギング:常にログの例外、特にリソース処理に関連するものは、何が間違っていたかを確認するために、次のことを確認してください。
 <code class="java">try (FileInputStream fis = new FileInputStream("input.txt")) { // Use fis } catch (IOException e) { logger.error("An error occurred while processing the file", e); for (Throwable se : e.getSuppressed()) { logger.error("Suppressed exception occurred", se); } }</code>

これらのプラクティスに従うことにより、リソースを使用してTry-Resourcesを使用してクリーンで効果的な方法で例外を処理し、その堅牢性と保守性の両方を改善することを確認します。

以上が自動リソース管理にJavaのリソース付きステートメントを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。