据我所知,在java中,抛出异常的函数不应该在上面的函数中没有try和catch或减速的情况下编译。 那么这段代码是合法的,不要粉碎?
public static void main(String[] args) {
Integer.parseInt("33");
}
即使Integer.parseInt() 抛出:NumberFormatException - 如果字符串不包含可解析的整数。
答案 0 :(得分:14)
NumberFormatException
扩展RuntimeException
,这是一个不需要被捕获的未经检查的异常。
摘自Java教程
因为Java编程语言不需要方法 catch或指定未经检查的异常(RuntimeException,Error和 他们的子类),程序员可能会想要编写代码 仅抛出未经检查的异常或使其全部异常 子类继承自RuntimeException。这两个捷径 允许程序员编写代码而不必担心编译器错误 而无需指定或捕获任何异常。 的 Full Article 强>
答案 1 :(得分:2)
未经检查的异常类是运行时异常类和错误类。
换句话说,每个Throwable,即RuntimeException
或子类以及每个Throwable,都是Error
或子类。它们可以被捕获但是捕获或throws
不是强制性的。
已检查的异常类是除未经检查的异常类之外的所有异常类。也就是说,已检查的异常类都是Throwable的子类,而不是RuntimeException及其子类和Error及其子类。
换句话说,每隔一个Throwable
。他们必须被抛出(throws
)或被抓住。
NumberFormatException
扩展RuntimeException
,因此它是未经检查的异常类之一,并且不必被方法捕获或抛出。
答案 2 :(得分:1)
NumberFormatException
是一个所谓的未经检查的异常,因为它是RuntimeException
的子类型。
在java中,未经检查的异常也可以在没有try-catch的情况下编译
答案 3 :(得分:0)
NumberFormatException是RuntimeException
未选中,因此无需捕获。
如果您不知道选中/未选中Exception
是什么2
答案 4 :(得分:0)
据我所知,在java中,抛出异常的函数不应该在没有try和catch的情况下编译
是的,只需将exception
更改为Checked exception
。
通过以下内容了解这些内容:
答案 5 :(得分:0)
NumberFormatException是一个RuntimeException。 RuntimeExceptions是未经检查的异常。您所说的对于已检查的异常是强制性的,但对于未经检查的异常则不是必需的。
几个链接:
http://www.javapractices.com/topic/TopicAction.do?Id=129
http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
答案 6 :(得分:0)
Java中的异常有两种:已检查异常和未经检查的异常。
已检查的异常是需要try-catch
阻止或声明的异常。
未经检查的异常不需要。 NumberFormatException
是未经检查的例外。
Basicaly,未经检查的异常派生自RuntimeException
,因此不需要声明或try-catch
阻止。
答案 7 :(得分:0)
这是一个未经检查的异常。类RuntimeException及其子类是未经检查的异常类。这些异常可能发生在您的代码中的任何位置。因此,您可以捕获该异常并继续执行