为什么必须在类定义中写入抛出异常?
来自C#,我只是没有得到这个在类/方法定义之后编写的“throws异常”:
public void Test() throws Exception
你必须写这个吗?如果你不这样做呢?如果我调用具有此符号的方法,是否必须捕获它?
来自C#,我只是没有得到这个在类/方法定义之后编写的“throws异常”:
public void Test() throws Exception
你必须写这个吗?如果你不这样做呢?如果我调用具有此符号的方法,是否必须捕获它?
您不必在所有情况下都编写它 - 如果您的方法抛出一个 checked(一个异常是 的子类而不是 的子类),则只需编写它即可。这是因为您的方法签名是一个协定,并且它向所有调用它的代码声明它有可能引发给定的异常。因为它是一个已检查的异常 - 一个可以预期的异常 - 调用代码需要预测看到抛出异常的可能性,并且需要能够处理它。Exception
Exception
RuntimeException
要回答您的两个具体问题:
bar
SomeException
foo
bar
foo
SomeException
Java课程的异常章节非常善于详细解释这一点,JavaWorld有一篇关于抛出和捕获异常的好文章,我一直认为这是传递给人们的一个很好的参考。
基本上是的,如果你不这样做,你的程序将无法编译。这称为已检验异常(任何异常都是已检验的异常,除非它是或扩展了 RuntimeException 或 Error)。
如果方法中存在引发异常的任何内容,除非您捕获异常或在方法上声明异常,否则它不会编译,然后调用该方法的任何内容都必须以相同的方式处理异常。