我的代码中的方法之一引发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
,但仍然没有被捕获。 最佳答案
好吧,显然您的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");
}