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

时间:2010-08-04 13:55:26

标签: java exception-handling runtimeexception

我正试图在我的代码中抛出一个异常:

throw RuntimeException(msg);

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

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

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

9 个答案:

答案 0 :(得分:100)

throw new RuntimeException(msg);

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

答案 1 :(得分:35)

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

throw new RuntimeException();

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

RuntimeException e = new RuntimeException();
throw e;

两个代码段都是等效的。

Link to the tutorials for completeness.

答案 2 :(得分:15)

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

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

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

  • 方法签名不必声明可能抛出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);