来自C#,我只是没有得到在类/方法定义之后写的'抛出异常':
public void Test() throws Exception
Run Code Online (Sandbox Code Playgroud)
你要写这个吗?如果你不这样做怎么办?如果我调用具有此符号的方法,我是否必须捕获它?
del*_*ego 25
你不具备把它写在所有情况下-你只是如果你的方法抛出一个检查写它Exception
(一个例外是的子类Exception
,而不是一个子类RuntimeException
).这是因为你的方法签名是一个契约,并且它向所有调用它的代码声明它有可能抛出给定的异常.因为它是一个经过检查的异常 - 可以预见的异常 - 调用代码需要预测看到抛出异常的可能性,并且需要能够处理它.
回答你的两个具体问题:
bar
可以抛出SomeException
,并且方法foo
调用bar
并且不想捕获异常,则方法签名为foo
会宣称它太投掷了SomeException
.Java课程的例外章节非常擅长详细解释这一点,JavaWorld有一篇关于抛出和捕获异常的好文章,我总是发现它是传递给人们的好参考.
基本上是的,如果你不这样做你的程序将无法编译.这称为已检查异常(任何异常都是已检查的异常,除非它是或扩展RuntimeException或Error).
如果抛出异常的方法中有任何东西它将无法编译,除非您捕获异常或在方法上声明它,然后调用该方法的任何东西都必须以相同的方式处理异常.
归档时间: |
|
查看次数: |
19539 次 |
最近记录: |