1

次のようなコードがあります。

public static void func(Reader r){
    int c = r.read();
    ...
}

コンパイラはr.read()IOException. これはどのような状況で発生する可能性がありますか? FileNotFoundExceptionファイルが見つからないときに のようなものがスローされることは明らかですが、IOExceptionかなりあいまいです。

編集:

誰かが興味を持っている場合に備えて、この質問をしたのは、単にprintStackTrace. しかし、例外の原因が分からないため、どうすればよいかわかりませんでした。

4

6 に答える 6

1

例えば:

public void load(InputStream inputStream) throws IOException {
    this.inputStream = inputStream;
    this.properties.load(this.inputStream);
    this.keys = this.properties.propertyNames();
    inputStream.close();
}

これは、セキュリティやストリームを開かないなどの理由で、入出力(接続)に問題がある場合だと思います。

コードソース:stackoverflow

于 2012-07-04T06:51:11.467 に答える
1

多くのことが IOException を引き起こす可能性があります。スローされた場合は、それを印刷するか、メッセージ ( Exception.getMessage()) をチェックして原因を確認できます。

AFileNotFoundExceptionは のサブクラスです。他のサブクラスについては、 「既知のサブクラス」リストIOExceptionを確認してください。

于 2012-07-04T06:43:57.247 に答える
1

IOExceptionストリーム自体が破損している場合、またはデータの読み取り中にエラーが発生した場合 (セキュリティ例外、アクセス許可の拒否など)、および/または から派生した一連の例外がスローされる可能性がありますIOEXception

于 2012-07-04T06:45:11.587 に答える
0

このコードは、デバッグしてスローされた IOException を確認するのに役立ちます。

String NL = System.getProperty("line.separator");
String line;
FileInputStream in;
try {
      fileName = choose.getSelectedFile().getCanonicalPath();
} catch (IOException e) {
      e.printStackTrace();  //This doesn't matter, see the second IOException catch.
}

try {
in = new FileInputStream(choose.getSelectedFile());
BufferedReader reader = new BufferedReader(new InputStreamReader(in, "UTF-8"));
StringBuffer content=new StringBuffer("");

while((line = reader.readLine()) != null){
    content.append(line+NL);
}

    textArea.setText(content.toString());
    reader.close();
    reader.readLine();

} catch (FileNotFoundException e) {
            JOptionPane.showMessageDialog(new JFrame(), "The file does not exist!", "Error", JOptionPane.WARNING_MESSAGE);
} catch (IOException e) {
            JOptionPane.showMessageDialog(new JFrame(), "There was an error in reading the file.", "Error", JOptionPane.WARNING_MESSAGE);
}

幸運を。

于 2013-01-02T09:05:40.913 に答える
0

IOException は、CharConversionException、CharacterCodingException、EOFException などの多くの例外のスーパークラスです。

メソッドがこれらすべての例外をリストした場合、呼び出し元はそれらすべてをキャッチする必要があります。そのため、便宜上、throws 句に IOException を含めると、呼び出し元が複数の catch ブロックを回避するのに役立ちます。ユーザーは、インスタンスまたは exception.getMessage() をチェックすることで、必要に応じて特定の例外を処理できます。

于 2012-07-04T06:46:40.123 に答える
0

詳細を知りたい場合は、catch ブロックで次のようにします。

catch (IOException e)
{
    e.printStackTrace();
}
于 2012-07-04T06:47:06.997 に答える