Java 处理回调内部异常的正确方法是什么?
我得到了一个带有异常实例的回调。目前我是这样处理的,但我认为还有更好的方法。希望听到Java专家的一些评论。=)Java 处理回调内部异常的正确方法是什么?,java,exception,exception-handling,callback,Java,Exception,Exception Handling,Callback,我得到了一个带有异常实例的回调。目前我是这样处理的,但我认为还有更好的方法。希望听到Java专家的一些评论。=) 我不能100%确定“在回调中处理异常”是什么意思,但您提供的onError方法可以更好地表达为: ... onError(Exception e) { try { throw e; } catch (IOException ioe) { // do smth with ioe } catch (MyException mye) {
我不能100%确定“在回调中处理异常”是什么意思,但您提供的
onError
方法可以更好地表达为:
...
onError(Exception e) {
try {
throw e;
} catch (IOException ioe) {
// do smth with ioe
} catch (MyException mye) {
// do smth with mye
}
}
...
好的,您可以对多个catch块使用try,每个catch块处理的异常比他后面的更窄,这样您就不再需要ifs中的锅炉板代码:
try {
doSomething();
} catch(IOException ioe) {
log.error("File not found"+ioe.getmessage();
} catch(Exception e) {
//... etc
}
我认为您可以使用异常的子类覆盖“onError”:
interface MyExceptionHandler
{
onError(Exception e) {
// Default exception
}
onError(IOException ioe) {
// do smth with ioe
}
onError(MyException mye) {
// do smth with mye
}
}
+1那太好了。请注意,重新抛出异常是一种廉价且安全的操作。特别是,它不会创建新的stacktrace,也不会以任何方式更改exception对象。重播不会导致性能下降吗?我不知道。为什么不先用instsnceof解决方案运行程序,然后用rethrow解决方案运行程序,看看执行时间相差了多少:-)谢谢Andrei,我收到异常作为参数。
interface MyExceptionHandler
{
onError(Exception e) {
// Default exception
}
onError(IOException ioe) {
// do smth with ioe
}
onError(MyException mye) {
// do smth with mye
}
}