我有一个带有异常实例的回调。目前我用这种方式处理它,但我认为有更好的方法。想听听Java专家的一些评论。 =)
...
onError(Exception e) {
if (e instanceof IOException) {
ioe = (IOException)e;
// do smth with ioe
} else if (e instanceof MyException) {
mye = (MyException)e;
// do smth with mye
}
}
...
答案 0 :(得分:8)
我不是100%肯定“处理回调中的异常”是什么意思,但你提供的onError
方法可以更好地表达如下:
...
onError(Exception e) {
try {
throw e;
} catch (IOException ioe) {
// do smth with ioe
} catch (MyException mye) {
// do smth with mye
}
}
...
答案 1 :(得分:2)
我认为您可以使用异常的子类覆盖“onError”:
interface MyExceptionHandler
{
onError(Exception e) {
// Default exception
}
onError(IOException ioe) {
// do smth with ioe
}
onError(MyException mye) {
// do smth with mye
}
}
答案 2 :(得分:1)
好吧,你可以使用一个带有多个catch块的try,每个catch块处理一个比他后面更小的异常,这样你不再需要带有ifs的样板代码:
try {
doSomething();
} catch(IOException ioe) {
log.error("File not found"+ioe.getmessage();
} catch(Exception e) {
//... etc
}