如何抛出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行? 如果我错了,请纠正我。