当我在eclipse中使用一个抛出异常的方法时,它通常会抱怨它是否被try / catch包围,或者是否再次抛出异常 . 但是对于一些例外(例如Integer.parseInt(string)),eclipse不会抱怨 .
我如何设置eclipse为所有未处理的异常投诉?
谢谢!
简单的答案是你做不到 .
更长的答案是:
经过检查和未经检查的异常是Java语言的基本组成部分 .
Eclipse编译器的作用不是为有效且完全可接受的Java提供编译错误或警告 .
考虑到大多数语句(理论上)可以抛出或传播例如 NullPointerException , ArrayIndexOutOfBoundsException , OutOfMemoryError 等异常,你也不会想要它 .
NullPointerException
ArrayIndexOutOfBoundsException
OutOfMemoryError
是的,有一个或两个"mistakes" ...例如 NumberFormatException 是一个未经检查的异常...但更好的方法是(例如)运行PMD与一些自定义规则来获取"ought to be"处理为的异常检查 .
NumberFormatException
此行为由java语言定义定义 . 有两种类型的异常:必须捕获异常,可能会发生RuntimeExceptions但不需要try / catch块 .
RuntimeException s不需要声明,可以由堆栈中的任何调用者处理 . 在编译时评估调用者的位置是不可能的 .
AFAIK,Eclipse使用与Java相同的已检查异常和未经检查的异常列表 . 这是Java工作原理定义的一部分 . 如果Eclipse允许你覆盖它,我会感到惊讶 .
在Java中,除了 RuntimeException 和 Error 的子类之外,都会检查所有 Throwable .
RuntimeException
Error
Throwable
只有在未处理已检查的异常时,编译器才会抱怨 . 这里Integer.parseInt(string)应该抛出一个未经检查或运行时异常的numberformatexception . 因为它没有抱怨 .
关于例外情况,“设定为抱怨”不是日食 .
见Checked and Unchecked Exceptions in Java .
6 回答
简单的答案是你做不到 .
更长的答案是:
经过检查和未经检查的异常是Java语言的基本组成部分 .
Eclipse编译器的作用不是为有效且完全可接受的Java提供编译错误或警告 .
考虑到大多数语句(理论上)可以抛出或传播例如
NullPointerException
,ArrayIndexOutOfBoundsException
,OutOfMemoryError
等异常,你也不会想要它 .是的,有一个或两个"mistakes" ...例如
NumberFormatException
是一个未经检查的异常...但更好的方法是(例如)运行PMD与一些自定义规则来获取"ought to be"处理为的异常检查 .此行为由java语言定义定义 . 有两种类型的异常:必须捕获异常,可能会发生RuntimeExceptions但不需要try / catch块 .
RuntimeException s不需要声明,可以由堆栈中的任何调用者处理 . 在编译时评估调用者的位置是不可能的 .
AFAIK,Eclipse使用与Java相同的已检查异常和未经检查的异常列表 . 这是Java工作原理定义的一部分 . 如果Eclipse允许你覆盖它,我会感到惊讶 .
在Java中,除了
RuntimeException
和Error
的子类之外,都会检查所有Throwable
.只有在未处理已检查的异常时,编译器才会抱怨 . 这里Integer.parseInt(string)应该抛出一个未经检查或运行时异常的numberformatexception . 因为它没有抱怨 .
关于例外情况,“设定为抱怨”不是日食 .
见Checked and Unchecked Exceptions in Java .