在感兴趣的程序中,在执行方法()期间,可能会发生一些与HTTP相关的异常。由于某些原因,该方法被设置为能够引发ExpException。我的兴趣只在特定类型的例外,即UnknownHostException异常,可以通过使用捕获是异常原因的UnknownHostException
if (e.getCause().getCause().getCause() instanceof UnknownHostException)
,我希望你同意访问是非常讨厌的方式。因此,这工作正常:
public class ExportException extends Exception;
class sth{
method() throws ExpException;
}
class main{
try{
method()
} catch(ExpExceptione e){
if (e.getCause().getCause().getCause() instanceof UnknownHostException){
doSthElse();
}
}
但是,我希望如下所述做。不幸的是,Eclipse大叫
UnknownHostException的无法到达的catch块。这个例外是从未从try语句抛出的 。
对我有帮助吗?我不想使用getCause()^ 3。
另外:这是一个很大的项目,我是新来的新手,宁可不要乱搞外面的课,而只是“主”。
我的计划是这样的:
public class ExportException extends Exception;
class sth{
method() throws ExpException;
}
class main{
try{
method()
} catch(UnknownHostException e){
doSth();
} catch(ExpExceptione){
doSthElse();
}
这个异常没有被抛出。这从错误消息中看起来很明显。 –
那么,如果异常是你捕获异常的*原因*,那么它就不会被抛到你试图捕获它的地方。要么改变捕获它的代码的一部分,并使其成为另一个异常的原因,要么像你一直在做的那样需要得到原因。 – RealSkeptic