java - 异常处理错误

标签 java exception

当一个方法抛出异常时,它会搜索调用堆栈以查找处理程序,对吗?从这个意义上说,为什么 exep.second(); 会出现错误?即使我在方法 second() 中捕获了异常。这是我的代码:

public class Exep {
void first()throws IOException{
    throw new IOException("device error");
}
void second()throws IOException{
    try{
        first();
    }catch(Exception e){
        System.out.println(e);
    }
}
public static void main(String args[]){
    Exep exep = new Exep();
    exep.second();
}

}

但是将抛出IOException添加到ma​​in()后,错误就会消失。为什么?

最佳答案

IOException 是一个受检查的异常,因此必须以某种方式进行处理。添加throws IOException to main 会抑制这种行为,但这不是一个好的做法。

second() ,您捕获 first() 中的所有异常,但您仍然包括 throws IOExceptionsecond()的声明中。这不是必需的,因为您可以保证first()抛出的任何异常将被抓获处理second() .

更多阅读:Exceptions

关于java - 异常处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44954001/

相关文章:

java - 如何同时查询两个芝麻存储库?

java - 我从 Spring boot 安全设置中收到 "Full authentication is required to access this resource"响应

swift - API滥用: Attempt to serialize store access on non-owning coordinator - with Assets. xcassets

exception - Haskell - 检查文件句柄的有效性

Java - 读取字符串和 int : java. util.NoSuchElementException

oracle - 如何处理 pl/sql 中的 invalid_identifier 异常?

Java 和 Espresso - 无法输入,需要支持输入法或可从类 : class SearchView 分配

Javafx:向事件添加更多上下文信息

java - SpringBoot进程运行时性能问题

java - Selenium 元素不可见