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 回答