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