这可能看起来像编程101问题,我原以为我知道答案,但现在发现自己需要仔细检查.在下面这段代码中,第一个catch块中抛出的异常是否会被下面的常规异常捕获块捕获?
try {
// Do something
} catch(IOException e) {
throw new ApplicationException("Problem connecting to server");
} catch(Exception e) {
// Will the ApplicationException be caught here?
}
Run Code Online (Sandbox Code Playgroud)
我一直认为答案是否定的,但现在我有一些可能由此造成的奇怪行为.答案可能与大多数语言相同,但我在Java工作.
在决定是否向方法添加throws子句或使用try-catch?时,一般的经验法则是什么?
从我自己阅读的内容来看,throws应该在调用者违反合同结束时使用(传递对象),并且try-catch在方法内执行操作期间发生异常时应该使用.它是否正确?如果是这样,应该在呼叫者方面做些什么?
PS:通过谷歌和搜索引擎优化搜索,但希望得到一个明确的答案.