我的代码中的一个方法会抛出UnknownHostException
异常
我第一次有catch
这样的块:
catch (Exception e) {
// TODO Auto-generated catch block
System.out.println("Custom Message "+e.getMessage());
if(e instanceof java.net.UnknownHostException){
System.out.println("Unknown Host Ex");
}else{
System.out.println("OTHER ERROR");
}
}
我遇到的问题是if
条件永远不会评估为true,因此我无法输出存在某些主机错误。
你可以看到我之前有一个sysout
打印出来:
Custom Message ; nested exception is:
java.net.UnknownHostException: abc.xyz
之后我写了一个单独的catch块来处理UnknownHostException
,但仍然没有被捕获。
答案 0 :(得分:9)
好吧,显然你的UnknownHostException
包含在其他一些例外中。换句话说,上面的一些代码捕获UnknownHostException
并抛出:
throw new SomeOtherException("Custom Message", unknownHostEx);
打印e.getClass()
以查看包装它的异常类型。您也可以尝试:
if(e.getCause() != null && e.getCause() instanceof UnknownHostException)
但它很难看。
顺便说一句,你应该避免使用instanceof
并让catch
找出异常本身(但在你的情况下它没有帮助):
catch (java.net.UnknownHostException e) {
System.out.println("Unknown Host Ex");
}
catch (Exception e) {
System.out.println("OTHER ERROR");
}
答案 1 :(得分:2)
UnknownHostException
嵌套在另一个Exception
内,因此它可能不是它的实例,但它只包含它。您最终可能会检查e.getCause()