我正试图在我的代码中抛出一个异常:
throw RuntimeException(msg);
但是当我在NetBeans中构建时,我收到了这个错误:
C:\....java:50: cannot find symbol
symbol : method RuntimeException(java.lang.String)
location: class ...
throw RuntimeException(msg);
1 error
我需要导入一些东西吗?我拼错了吗?我相信我一定是在做一些愚蠢的事: - (
答案 0 :(得分:100)
throw new RuntimeException(msg);
你需要new
。它正在创建一个实例并抛出它,而不是调用方法。
答案 1 :(得分:35)
Exception
与Java中的任何其他Object
一样。您需要先使用new
关键字创建新的Exception
,然后才能throw
。
throw new RuntimeException();
您也可以选择执行以下操作:
RuntimeException e = new RuntimeException();
throw e;
两个代码段都是等效的。
答案 2 :(得分:15)
正如其他人所说的那样,在投掷之前实例化对象。
只想加一点;抛出RuntimeException是非常罕见的。 API中的代码抛出此类的子类是正常的,但通常,应用程序代码会抛出异常,或者扩展Exception而不是RuntimeException。
回想起来,我错过了添加为什么你使用Exception而不是RuntimeException的原因; @Jay,在下面的评论中,添加了有用的位。 RuntimeException不是一个经过检查的异常;
答案 3 :(得分:6)
你必须在扔它之前实例化它
throw new RuntimeException(arg0)
PS: 毫无疑问,Netbeans IDE应该已经指出编译时错误
答案 4 :(得分:4)
throw new RuntimeException(msg); // notice the "new" keyword
答案 5 :(得分:3)
您需要使用new
创建RuntimeException的实例,就像创建大多数其他类的实例一样:
throw new RuntimeException(msg);
答案 6 :(得分:1)
仅供其他人使用:确保它是新的RuntimeException,而不是需要将错误作为参数的新RuntimeErrorException。
答案 7 :(得分:1)
throw new RuntimeException(msg);
与其他任何异常不同我认为RuntimeException是唯一一个不会停止程序的程序,但它仍然可以继续运行并恢复只打印出一堆异常行?如果我错了,请纠正我。
答案 8 :(得分:0)
使用新关键字,我们总是创建一个实例(新对象)并抛出它,而不是将其称为方法
throw new RuntimeException("Your Message");
You need the new in there. It's creating an instance and throwing it, not calling a method.
int no= new Scanner().nextInt(); // we crate an instance using new keyword and throwing it
使用新的关键字记忆清除(由于使用和抛出)
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//do your work here..
}
}, 1000);