[英]Why Integer.parseInt is compiling without try catch?
据我所知,在java中,抛出异常的函数不应该在没有try和catch或者在它上面的函数中减速的情况下编译。 那么这段代码怎么合法,不要粉碎?
public static void main(String[] args) {
Integer.parseInt("33");
}
即使Integer.parseInt()抛出:NumberFormatException - 如果字符串不包含可解析的整数。
NumberFormatException
扩展RuntimeException
,这是一个不需要捕获的未经检查的异常。
摘自Java教程
由于Java编程语言不需要捕获或指定未经检查的异常(RuntimeException,Error及其子类)的方法,因此程序员可能会编写仅抛出未经检查的异常或使其所有异常子类继承自RuntimeException的代码。 这两个快捷方式都允许程序员编写代码而不必担心编译器错误,也不必费心去指定或捕获任何异常。 全文
从Java语言规范 :
未经检查的异常类是运行时异常类和错误类。
换句话说,每个Throwable,即RuntimeException
或子类以及每个Throwable,都是Error
或子类。 它们可以被捕获,但捕获或throws
不是强制性的。
已检查的异常类是除未经检查的异常类之外的所有异常类。 也就是说,已检查的异常类都是Throwable的子类,而不是RuntimeException及其子类和Error及其子类。
换句话说,每一个Throwable
。 他们必须被投掷( throws
)或被抓住。
NumberFormatException
扩展RuntimeException
,因此它是未经检查的异常类之一,并且不必被方法捕获或抛出。
NumberFormatException
是一个所谓的未经检查的异常,因为它是RuntimeException
的子类型。
在java中,未经检查的异常也可以在没有try-catch的情况下编译
NumberFormatException是一个RuntimeException
它是未选中的,因此不需要捕获。
如果您不知道检查/未检查的Exception
是2,请检查[文档]
NumberFormatException是一个RuntimeException。 RuntimeExceptions是未经检查的异常。 您所说的对于已检查的异常是强制性的,但对于未经检查的异常不是必需的。
几个链接:
http://www.javapractices.com/topic/TopicAction.do?Id=129
http://docs.oracle.com/javase/tutorial/essential/exceptions/runtime.html
Java中的异常有两种:已检查异常和未经检查的异常。
已检查的异常是需要try-catch
块或声明的异常。
未经检查的异常不需要。 NumberFormatException
是未经检查的异常。
Basicaly,未经检查的异常派生自RuntimeException
,因此不需要声明或try-catch
块。
它是一个未经检查的异常。类RuntimeException及其子类是未经检查的异常类。这些异常可能出现在代码中的任何位置。因此,您可以捕获该异常并继续执行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.