【发布时间】:2011-05-11 11:16:23
【问题描述】:
当我在 Eclipse 中使用抛出异常的方法时,如果它没有被 try/catch 包围或者没有再次抛出异常,它通常会抱怨。但是对于某些例外情况(例如 Integer.parseInt(string)),eclipse 不会抱怨。
我如何设置 eclipse 来抱怨所有未处理的异常??
谢谢!
【问题讨论】:
当我在 Eclipse 中使用抛出异常的方法时,如果它没有被 try/catch 包围或者没有再次抛出异常,它通常会抱怨。但是对于某些例外情况(例如 Integer.parseInt(string)),eclipse 不会抱怨。
我如何设置 eclipse 来抱怨所有未处理的异常??
谢谢!
【问题讨论】:
简单的答案是你不能。
更长的答案是:
已检查与未检查的异常是 Java 语言的基本部分。
Eclipse 编译器不负责为有效且完全可接受的 Java 提供编译错误或警告。
考虑到大多数语句可能(理论上)抛出或传播异常,例如 NullPointerException、ArrayIndexOutOfBoundsException、OutOfMemoryError 等,您也不希望它这样做。
是的,有一个或两个“错误”......例如NumberFormatException 是一个未经检查的异常......但更好的处理方法是(例如)使用一些自定义规则运行 PMD选择“应该”被视为已检查的异常。
【讨论】:
此行为由 java 语言定义定义。 有两种类型的异常: 必须捕获异常,可能会发生 RuntimeExceptions 但不需要 try/catch 块。
【讨论】:
RuntimeExceptions 不需要声明,可以由堆栈中的任何调用者处理。在编译时评估调用者所在的位置是不可能的。
【讨论】:
AFAIK,Eclipse 使用与 Java 相同的已检查异常和未检查异常列表。这是 Java 工作方式定义的一部分。如果 Eclipse 允许您覆盖它,我会感到惊讶。
在 Java 中,除了 RuntimeException 和 Error 的子类之外,所有 Throwable 都会被检查。
【讨论】:
只有当检查的异常没有被处理时,编译器才会抱怨。这里的 Integer.parseInt(string) 预计会抛出一个未检查或运行时异常的 numberformatexception。因为它没有抱怨。
【讨论】:
不是 eclipse 会“抱怨”异常。
【讨论】: