在回调内处理异常的正确方法是什么?

Ale*_*rov 8 java exception-handling exception callback

我有一个带异常实例的回调.目前我用这种方式处理它,但我认为有更好的方法.想听听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
   }
}
...
Run Code Online (Sandbox Code Playgroud)

aio*_*obe 8

我不是100%肯定"处理回调内的异常"是什么意思,但onError你提供的方法可以更好地表达如下:

...
onError(Exception e) {
   try {
       throw e;
   } catch (IOException ioe) {
      // do smth with ioe
   } catch (MyException mye) {
      // do smth with mye
   }
}
...
Run Code Online (Sandbox Code Playgroud)

  • +1这很整洁.请注意,重新抛出异常是一种廉价且安全的操作.特别是,它不会以任何方式创建新的堆栈跟踪或更改异常对象. (2认同)