java – 使用特定消息捕获异常

是否有更好的方法来捕获具有消息的特定异常,然后执行此操作:

try{
   methodThatWillProbablyThrowASocketException();
} catch(SocketException e){
   if(e.getMessage().contains("reset")){
      // the connection was reset
      // will ignore
   } else{
      throw e;
   }
}

例如,HttpStatusException为我提供了方法getStatusCode(),我可以轻松地比较错误状态是404还是502,并且可以决定做什么:

try{
   methodThatWillProbablyThrowAHTTPException();
} catch(HttpStatusException e){
   if(e.getStatusCode() == 404){
      // not found, will not continue
   } 
   if else(e.getStatusCode() == 502){
      // server errror, try again
   } else{
      throw e;
   }
}

大多数其他例外不给我探测器方法,只是消息.

所以我的问题是,这是正确的方法吗?用String比较?或者,还有更好的方法?

最佳答案 做一件事.

>收集项目可能发生的所有类型的异常.
>通过扩展Exception创建一个单独的类.
>重写getCause()方法.

http://docs.oracle.com/javase/6/docs/api/java/lang/Throwable.html#getCause%28%29

public Throwable getCause()

为不同的异常定义你想要的代码就像空指针101一样……

每个地方使用那个班级.因此,您必须只编写一次异常,并且可以使用尽可能多的项目.

建立课程后,它将可以重复使用,满足您的所有需求

如果您获得新条件,请仅更新此课程,所有事情都将完成

根据我的说法,这是更好的解决方案……

这样您就可以获得正在寻找的功能.你必须自己做.

点赞