Java 异常 FileNotFoundException

Java 处理文件操作时,经常会遇到一个异常——文件找不到 FileNotFoundException。

异常成因

在以下情况下可能会引发此异常:

  • 指定路径名的文件不存在
  • 指定路径名的文件确实存在,但由于某种原因无法访问(请求写入只读文件,或权限不允许访问该文件)

异常处理

FileNotFoundException 是 java.io.IOException 异常的子类,处理这些异常都可以使用 try-catch 代码块。

在 catch 中,我们可要考虑如下操作:

  • 引发特定业务的异常:这可能是停止执行错误,但您会将决定留在应用程序的上层(不要忘记包含原始异常)
  • 通过对话或错误消息提醒用户:这不是停止执行错误,因此只需通知就足够了
  • 创建文件:读取可选配置文件,没有找到它并使用默认值创建一个新文件
  • 在另一个路径中创建一个文件:你需要写一些东西,如果第一个路径不可用,你尝试使用一个安全的路径
  • 只需记录一个错误:此错误不应停止执行,但您将其记录下来以供将来分析

引发特定业务的异常

如果文件不存在,则把这个错误抛出,等后续的代码捕获到该异常做统一处理。

public void raiseBusinessSpecificException() {
    try {
        readFile();
    } catch (FileNotFoundException ex) {
        throw new BusinessException(
          "BusinessException: 文件不存在", ex);
    }
}

其中自定义的异常:

    public class BusinessException extends RuntimeException {
        // 自定义逻辑
    }

记录异常

将异常状况记录到日志,这可能会打印到控制台或者记录到文件中。

public void logError() throws IOException {
    try {
        readFailingFile();
    } catch (FileNotFoundException ex) {
        log.error("文件 " + fileName + " 未找到.", ex);
    }
}

创建文件

有时候,我们希望文件不存在时,创建一个文件:

public void createFile() throws IOException {
    try {
        readFailingFile();
    } catch (FileNotFoundException ex) {
        try {
            new File(fileName).createNewFile();
            readFailingFile();            
        } catch (IOException ioe) {
            throw new RuntimeException(
              "BusinessException: 创建文件失败", ioe);
        }
    }
}
转载请注明出处:码谱记录 » Java 异常 FileNotFoundException
标签: