[解決済み] Java未報告例外
質問内容
Javaを学習していると、よくこのようなエラーに出くわします。それは次のようなものです。
未報告の例外 java.io.FileNotFound 例外; キャッチするか、スローされるように宣言する必要があります。
java.io.FileNotFoundはほんの一例で、いろいろなものを見てきました。この特定のケースでは、エラーを引き起こすコードは次のとおりです。
OutputStream out = new BufferedOutputStream(new FileOutputStream(new File("myfile.pdf")));
try/catchブロックの中にステートメントを入れると、エラーは常に消え、コードは正常にコンパイル&実行されます。それで十分な時もありますが、そうでない時もあります。
まず、私が学んでいる例では、try/catchは必ずしも使われておらず、それでも動作するはずです。
さらに重要なのは、コード全体をtry/catchの中に入れると、全く動作しないことがあることです。例えば、この特別なケースでは、私は次のようにする必要があります。 out.close()です。 で finally{ }. ブロックの中にありますが、もし上の文自体が try{ }. , finally{} は、"see" アウト となり、閉じることができません。
最初に考えたのは java.io.FileNotFoundをインポートします。 または他の関連する例外がありますが、それは助けられませんでした。
どうすればいいですか?
あなたが言っているのは チェック済み例外 つまり、宣言するか、処理する必要があります。Javaでファイルを扱うための標準的な構成は、次のようなものです。
InputStream in = null;
try {
in = new InputStream(...);
// do stuff
} catch (IOException e) {
// do whatever
} finally {
if (in != null) {
try {
in.close();
} catch (Exception e) {
}
}
}
醜い?冗長?Java 7ではARMブロックで少し改善されますが、それまでは上記で我慢してください。
また、例外処理を呼び出し側に任せることも可能です。
public void doStuff() throws IOException {
InputStream in = new InputStream(...);
// do stuff
in.close();
}
ただし、その場合でも
close()
でラップする必要があります。
finally
ブロックを作成します。
しかし、上記の関数宣言では、このメソッドが
IOException
. これはチェックされた例外なので、この関数の呼び出し元は以下のようにする必要があります。
catch
を宣言し、呼び出し元がそれに対処できるようにする、など)。
関連
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み] java のクラス内のコンストラクタは、指定された型に適用できない
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでNullPointerExceptionを回避する方法
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでArrayListではなくLinkedListを使用するのはいつですか?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] java.sql.SQLException: ユーザー 'root'@'localhost' (using password: YES) のためのアクセスが拒否されました。
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】スレッド「main」での例外 java.lang.StringIndexOutOfBoundsException: 文字列のインデックスが範囲外です。0 [閉店]
-
[解決済み】HTTPステータス500 サーブレットクラスのインスタンス化エラー [重複]。
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】java 'jar'が内部コマンドまたは外部コマンドとして認識されない。
-
[解決済み】Javaでユーザー入力を待機させる方法
-
[解決済み】破損したjarファイル
-
[解決済み】スレッド "main "での例外 java.util.NoSuchElementException
-
[解決済み】CreateProcess error=2, The system cannot find file specified.