首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Integer.parseInt在编译时不使用try catch?

为什么Integer.parseInt在编译时不使用try catch?
EN

Stack Overflow用户
提问于 2013-01-10 18:36:57
回答 8查看 2K关注 0票数 3

据我所知,在java中,抛出异常的函数不应该在上面的函数中没有try和catch或减速的情况下被编译。那么为什么这个代码是合法的,并且不会崩溃呢?

代码语言:javascript
复制
public static void main(String[] args) {
    Integer.parseInt("33");
}

即使Integer.parseInt()抛出: NumberFormatException -如果字符串不包含可解析的整数。

EN

回答 8

Stack Overflow用户

发布于 2013-01-10 18:38:10

NumberFormatException扩展了RuntimeException,这是一个不需要捕获的未检查异常。

摘录自Java教程

因为Java编程语言不需要方法来捕获或指定未检查的异常(RuntimeException、Error及其子类),所以程序员可能倾向于编写只抛出未检查的异常的代码,或者使所有的异常子类继承自RuntimeException。这两种快捷方式都允许程序员编写代码,而无需担心编译器错误,也无需费心指定或捕获任何异常。

NumberFormatException Api Docs

票数 14
EN

Stack Overflow用户

发布于 2013-01-10 18:48:03

Java language spec

未检查的异常类是运行时异常类和错误类。

换句话说,每个Throwable都是一个RuntimeException或子类,每个Throwable都是一个Error或子类。它们可以被捕获,但捕获或throws不是强制性的。

检查的异常类是除未检查的异常类之外的所有异常类。也就是说,检查的异常类是Throwable的所有子类,而不是RuntimeException及其子类和Error及其子类。

换句话说,每隔一个Throwable。它们必须被抛出(throws)或被接住。

NumberFormatException扩展了RuntimeException,因此它是未检查的异常类之一,并且不需要在方法中捕获或抛出。

票数 2
EN

Stack Overflow用户

发布于 2013-01-10 18:38:51

NumberFormatException是所谓的未检查异常,因为它是RuntimeException的一个子类型。

在java中,未检查异常也可以在没有try-catch的情况下编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14255880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档