看别人写的有个读取文件的代码,异常一直向上抛,然后我就修改为捕获异常,结果就导致文件没有读取到,后面代码依然执行,觉得浪费!
但一直向上抛,又觉得每个调用方法加 throws IOException 特麻烦。怎么实现捕获异常,正确的终止后续代码执行
如果异常需要被调用者知晓的,是必须往上抛的,由调用者决定是否需要捕获,还是再继续往上抛出。
如果异常对于调用者来说,可以屏蔽,那你就可以把异常吃掉,以避免影响整个流程,然后再捕获异常的地方,输出错误日志,便于后续跟踪
一般都统一上抛,到controller时有全局异常处理器来统一捕捉处理。搜搜你项目,应该有个GlobalExceptionHanderxxxx
不知道你这个问题是否已经解决, 如果还没有解决的话:package javaadvanced;
import java.io.FileInputStream;
import java.io.IOException;
/**
* 异常学习
*
* @author NoBug
* @version 1.0
* @time 2022/3/11
* @Blog https://blog.csdn.net/qq_51184516
*
*/
public class MyException {
public void readFile() throws IOException {
FileInputStream file = new FileInputStream("read.txt");
int fp;
while ((fp = file.read()) != -1) {
System.out.print((char) fp);
fp = file.read();
}
file.close();
}
public static void main(String[] args) {
MyException fp = new MyException();
/*
* 1. throws 抛给上层处理, main()调用了readFile(),可以说 main方法就是readFile方法的上层。
*
* 2. throws 声明异常,不处理,交由上层处理。
*/
try {
fp.readFile();
} catch (IOException e) {
// 捕获异常
System.out.println(e);
}
}
}
java.io.FileNotFoundException: read.txt (系统找不到指定的文件。)