用java编写顶级异常处理程序的最佳方法是什么
我有一个顶级异常处理程序方法,它必须处理多个RuntimeException。我需要以不同的方式处理它们,并为每一个返回不同的响应。一系列的if-elses比try-catch好吗用java编写顶级异常处理程序的最佳方法是什么,java,exception,Java,Exception,我有一个顶级异常处理程序方法,它必须处理多个RuntimeException。我需要以不同的方式处理它们,并为每一个返回不同的响应。一系列的if-elses比try-catch好吗 public void handler(Exception e) { if (e instanceOf AException) { } else if (e instanceOf BException) { } else if (e instanceOf CException) {
public void handler(Exception e) {
if (e instanceOf AException) {
} else if (e instanceOf BException) {
} else if (e instanceOf CException) {
}
......
......
}
或
尽管我认为第二种方法确实是对语言的滥用,但它确实有检查捕获顺序的好处,因为如果您在
subassofaeexception
之前尝试捕获aeexception
,它将不会编译,因为subassofaeexception
子句将无法访问;对if/else链没有这样的检查,这是真的。我正在寻找编写顶级处理程序的最佳方法。在oop语言中,instanceOf并不是不受欢迎的。几乎“最佳方式”总是基于观点,这些问题将就此结束。顶级处理程序基于异常类型进行操作的整个概念似乎是错误的。一个顶级管理者真正应该做的唯一一件事就是说“哎呀,出了什么事了”,阻止整个世界崩溃。如果您想做特定的事情,请在代码中更具体的位置处理它们。我的Java在这一点上有点生疏,但是当您的处理程序(e)
函数重新抛出异常对象时,原始throw
附加到异常对象的堆栈跟踪信息会发生什么变化?
public void handler(Exception e) {
try {
throw e;
} catch (AException a) {}
} catch (BException b) {}
......
......
}