如何抛出RuntimeException(“找不到符号”)

我试图在我的代码中抛出exception,如下所示:

throw RuntimeException(msg); 

但是当我在NetBeans中构建时,我收到此错误:

 C:\....java:50: cannot find symbol symbol : method RuntimeException(java.lang.String) location: class ... throw RuntimeException(msg); 1 error 

我需要导入一些东西吗? 我拼错了吗? 我敢肯定我一定是在做一些愚蠢的事:-(

throw new RuntimeException(msg)

你需要new的。 它正在创建一个实例并抛出它,而不是调用方法。

Exception就像Java中的任何其他Object一样。 您需要使用new关键字创建一个新的Exception然后才能throw它。

 throw new RuntimeException(); 

您也可以选择执行以下操作:

 RuntimeException e = new RuntimeException(); throw e; 

两个代码片段都是等效的。

链接到教程的完整性。

正如其他人所说的那样,在抛出之前实例化对象。

只是想加一点; 抛出RuntimeException是非常罕见的。 API中的代码抛出此类的子类是正常的,但通常,应用程序代码会抛出exception,或者扩展Exception而不是RuntimeException。

回想起来,我错过了添加使用Exception而不是RuntimeException的原因; @Jay,在下面的评论中,添加了有用的位。 RuntimeException不是一个经过检查的exception;

  • 方法签名不必声明可能抛出RuntimeException。
  • 该方法的调用者不需要捕获exception,或以任何方式确认它。
  • 试图以后使用您的代码的开发人员不会预见到这个问题,除非他们仔细查看,这将增加代码的维护负担。

你必须在扔之前实例化它

 throw new RuntimeException(arg0) 

PS:有趣的是,Netbeans IDE应该已经指出了编译时错误

 throw new RuntimeException(msg); // notice the "new" keyword 

您需要使用new创建RuntimeException的实例,就像创建大多数其他类的实例一样:

 throw new RuntimeException(msg); 

仅供其他人使用:确保它是新的RuntimeException,而不是新的RuntimeErrorException,它需要将错误作为参数。

 throw new RuntimeException(msg); 

与其他任何exception不同,我认为RuntimeException是唯一一个不会停止程序的程序,但它仍然可以继续运行并恢复只打印出一堆exception行? 如果我错了,请纠正我。