什么时候使用 "catch",什么时候使用 "throws"?
在“throws”情况下,我应该在调用堆栈的哪个位置放置我的catch?
如果我从函数3传播异常到函数2,为什么函数2不应该做同样的事情?这样最终我将在"main"中处理所有异常,我认为把所有代码都放在try块中并不是一个好习惯,对吗?
那么,在“catch”和“throws”之间选择的逻辑方式是什么?在第二种情况下,我应该在调用堆栈中放置我的catch吗?
try {
//stuff
}
catch (MyException me) {
//stuff
}
对比
public void doSomething() throws MyException {
//stuff
}
在“throws”情况下,我应该在调用堆栈的哪个位置放置我的catch?
Main
----- Function 1
----- Function 2
----- Function 3 (generate exception)
如果我从函数3传播异常到函数2,为什么函数2不应该做同样的事情?这样最终我将在"main"中处理所有异常,我认为把所有代码都放在try块中并不是一个好习惯,对吗?
那么,在“catch”和“throws”之间选择的逻辑方式是什么?在第二种情况下,我应该在调用堆栈中放置我的catch吗?
throws
传播该已检查异常过程中过于繁琐。 - user2246674