2011-12-06 40 views
2

声明(Unchecked Exception)沿着方法签名b/c抛出异常的好处是什么?它不强制调用者保留在try catch块中。Java抛出RuntimeException的好处

public void testRuntimeEx()throws RuntimeException{ 

if(1==1){throw new RuntimeException()} 

} 

//Caller method 
public void testCaller(){ 
// not necessery to handle even caller does not known which RuntimeException might be throws then what is the benefit throws clause with method signature 
testRuntimeEx(); 

} 
+0

您不必声明它,因为它没有被选中。 – edwardw

回答

0

如果抛出自定义的未经检查的异常,它变得更有意义,而捕捉系统异常和未经检查的异常不会强制捕捉太多。

3

它仍然作为文件,特别是如果你不使用一个通用的RuntimeException,但更具体的东西像抛出:IllegalArgumentException或UnsupportedOperationExceptionIndexOutOfBoundsException,也可以添加一些的JavaDoc何时会发生。

尽管如此,在您的示例代码片段中,这是非常没有意义的。

2

此声明是使用此代码的开发人员的信号,它会引发RuntimeException。 但它闻起来不好。

P.S.您发布的代码无法编译:

throw RuntimeException 

这是不正确的投掷。

1

好处是通常调用者与异常没有任何关系。它捕捉到它,用其他异常包装并再次抛出。或者,也可以使用throws关键字声明异常,并在异常情况下对此类型变为透明。

我想说,描述的情况是典型的应用程序,我们通常写业务代码,并有一个集中处理所有异常的地方。 API不正确。例如,如果您正在使用实现SSH的库,则当出现问题时,您期望它会抛出IOException(或甚至更特殊的异常)。

相关问题