我具有以下结构:
try {
Request.Get(url).execute() // Apache Fluent
// do some other stuff
} catch (HttpResponseException e) {
if (e.getStatusCode() != 404) {
//drop to next catch clause
}
handle404(e);
} catch (IOException e) {
handleGenericIOException(e);
}
我无法弄清楚该if
语句中的内容。我只想说“如果异常不是404,则像此子句一样执行该操作就不会捕获它”。但是简单地调用throw e
只会将它从方法中抛出。有没有办法传递到下一个catch
子句?
答案 0 :(得分:3)
嵌套您的异常处理程序。
try {
try {
Request.Get(url).execute() // Apache Fluent
// do some other stuff
} catch (HttpResponseException e) {
if (e.getStatusCode() != 404) {
throw e;
}
handle404(e);
}
} catch (IOException e) {
handleGenericIOException(e);
}
重新抛出将被捕获在外部try / catch块中,因为HttpResponseException
是IOException
的子类。
答案 1 :(得分:2)
我认为您不能“放下”到下一个catch子句,但是您可能可以执行以下操作:
crmData
因为IOException也应该捕获HttpResponseExceptions(如果它是var req = HttpWebRequest.Create(url + "?name=value1&name2=value2");
)