Java抛出RuntimeException的好处是什么

Java抛出RuntimeException的好处是什么,java,runtimeexception,Java,Runtimeexception,声明(未检查的异常)沿方法签名b/c抛出异常的好处是什么?它不会强制调用方保留在try-catch块中 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

声明(未检查的异常)沿方法签名b/c抛出异常的好处是什么?它不会强制调用方保留在try-catch块中

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(); 

}

它仍然用作文档,特别是如果您不使用通用的RuntimeException,而是更具体的东西,比如IllegalArgumentException,或者还添加一些JavaDoc来说明何时会发生这种情况


在您的示例代码片段中,它是非常没有意义的。

这个声明对于使用此代码的开发人员来说是一个信号,它抛出RuntimeException。 但闻起来不好闻

您发布的p.S.代码将不会编译:

throw RuntimeException

这是不正确的抛出。

好处是调用方通常与异常无关。它捕获它,与其他异常一起包裹,然后再次抛出。或者,使用
throws
关键字声明异常,并在异常发生时对此类型变得透明


我想说,所描述的情况对于我们通常编写业务代码并有一个集中位置来处理所有异常的应用程序来说是典型的。这对于API是不正确的。例如,如果您正在使用实现SSH的库,您希望它在出现问题时抛出
IOException
(或者更专门化的异常)

如果抛出自定义未检查的异常,它将变得更有意义,而不是捕获系统异常,未检查的异常也不会强制捕获。

您也不必声明它,因为它是未检查的。