0

このコードではどのような問題が発生する可能性がありますか? 例外が発生しても、このコードは呼び出し元に例外をスローできると思います。したがって、トラブルは発生しません。

どうすれば改善できますか?

public static void cat(File named) {
  RandomAccessFile input = null;
  String line = null;
  try {
    input = new RandomAccessFile(named, “r”);
    while ((line = input.readLine()) != null {
      System.out.println(line);
    }
    return;
  } finally {
    if (input != null) {
      input.close();
    }
  }
}
4

3 に答える 3

2

コードは IOException をスローする必要があります。Eclipse でコードを編集してみてください。また、例外をスローするように提案されます。

また、Java 1.7 には「try-with-resources」という新しい概念があります。以下の try ステートメントを参照してください。で使用されるリソースtry (...)は自動的に閉じられます。

public static void cat(File named) throws IOException
{
    try (RandomAccessFile input = new RandomAccessFile(named, "r"))
    {
        String line = null;
        while ((line = input.readLine()) != null)
        {
            System.out.println(line);
        }
    }
}
于 2013-04-20T08:54:06.317 に答える
1

このコードではどのような問題が発生する可能性がありますか?

以来public class FileNotFoundException extends IOException

メソッドを次のように変更できます。

public static void cat(File named) throws IOException

そして今、 try-catchブロックは必要ありません。

そして、呼び出し元はexceptionメソッドによってスローされたものをキャッチする必要があります。

しかし、なぜあなたcatchは例外を望んでいないのですか?

于 2013-04-20T08:55:04.020 に答える
0

メソッドに throws 宣言を追加すると、このメソッドの呼び出し元には、この例外の try catch ブロックが必要になります。

public static void cat(File named) throws IOException {
      RandomAccessFile input = null;
      String line = null;
      try {
        input = new RandomAccessFile(named, "r");
        while ((line = input.readLine()) != null ){
          System.out.println(line);
        }
        return;
      } finally {
        if (input != null) {
          input.close();
        }
      }
    }
  //caller 
   try{
     Class.cat(new File("abc.txt"));
    }catch(IOException e)
    {
      //
    }
于 2013-04-20T08:56:41.803 に答える