【问题标题】:How to suppress error for missing `throws`如何抑制丢失“抛出”的错误
【发布时间】:2012-12-26 03:32:31
【问题描述】:

当在方法中抛出异常时,有没有办法让 Eclipse 抑制缺少 throws 声明的错误?

如果您要在没有明确指定throws 的情况下构建和运行某些东西,它将展开到main 方法并使程序崩溃(这是我在这种特殊情况下想要的)。有一些例外,比如sun.reflect.generics.reflectiveObjects.NotImplementedException,它允许你抛出它而不需要指定throws。

【问题讨论】:

  • 你不能在你的 main 方法中添加一个 throws-declaration 吗? (我这台电脑上没有安装Eclipse,所以不能自己测试,很遗憾……)
  • 当调用层次结构非常深时不会。在出现这个异常时,我必须添加超过 13 个 throws 声明,这不是我想做的事情。
  • 查看this answer - 那里显示的选项窗格似乎有很多用于各种错误和警告的选项。也许那里有什么东西?
  • 听起来像是一个已检查的异常,您必须用 try/catch 将其包围或添加到 throws 子句中。因为,这是一个语法错误,你不能抑制它。你可以做的是捕获它并抛出一个新的未经检查的异常,它不需要 throws 子句。
  • @Qix:错误和运行时异常统称为未经检查的异常。请阅读 yshavit 链接的文章。

标签: java eclipse exception throws


【解决方案1】:

Eclipse 在这里并没有做任何特别的事情。问题在于 Java 代码本身。您的两个最佳选择是更改方法的签名以包含 throws,或者捕获异常并将其作为 RuntimeException(或 RuntimeException 的子类)重新抛出。

try {
    doWhatever();
} catch (SomeException e) {
    throw new SomeRuntimeException(e);
}

...其中 SomeException 是或扩展了 Exception(但不是 RuntimeException),而 SomeRuntimeException 是或扩展了 RuntimeException。

有关更多信息,请查看 Sun 的 Java 教程中checked Exceptions 中的部分。

【讨论】:

  • +1 RuntimeException 做到了!谢谢你。在这种情况下,我创建了自己的异常,因此只需将 extends Exception 更改为 extends RuntimeException。
猜你喜欢
  • 2013-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多