"处理或声明。这就是规则。" -《Head First》 但这是一条好的规则吗?让我先举个例子:
public static void main(String[] args) throws Exception {
m1();
}
static void m1() throws Exception{
m2();
}
static void m2() throws Exception {
throw new Exception();
}
m2()
抛出异常并且 m1()
调用了 m2()
,这意味着它必须要么处理它,要么声明它。好的,我们来声明它。然后 main()
调用了 m1()
,也需要做出相同的选择:是声明还是处理。 我再次决定将其声明,代码编译通过。
好的,它能工作,但到底是谁处理了这个异常呢?看起来似乎没有人。我知道我是一个初学者,但我不喜欢听起来像那样。是的,有些方法可以决定是声明还是处理异常,但为什么是main()
呢?难道主方法不应该只是处理吗?这样就不会有任何异常“溜走”了。
我错过了什么吗?老实说,我很惊讶居然允许主方法仅仅是声明异常,尤其知道它是我们从技术上讲最后一个可以捕获异常的地方。
main
中处理异常,但您也可以将其留给默认的异常处理程序。 - RealSkeptic不应
引发异常...在这种情况下,它能够验证用户,即登录失败。但是,如果用户数据库不可用,则应
引发异常。 - JoelFan