为什么Integer.parseInt在没有try catch的情况下进行编译?

时间:2013-01-10 10:36:57

标签: java string exception int parseint

据我所知,在java中,抛出异常的函数不应该在上面的函数中没有try和catch或减速的情况下编译。 那么这段代码是合法的,不要粉碎?

public static void main(String[] args) {
    Integer.parseInt("33");
}

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

8 个答案:

答案 0 :(得分:14)

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

enter image description here

摘自Java教程

  

因为Java编程语言不需要方法   catch或指定未经检查的异常(RuntimeException,Error和   他们的子类),程序员可能会想要编写代码   仅抛出未经检查的异常或使其全部异常   子类继承自RuntimeException。这两个捷径   允许程序员编写代码而不必担心编译器错误   而无需指定或捕获任何异常。   的 Full Article

NumberFormatException Api Docs

答案 1 :(得分:2)

来自Java language spec

  

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

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

  

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

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

NumberFormatException扩展RuntimeException,因此它是未经检查的异常类之一,并且不必被方法捕获或抛出。

答案 2 :(得分:1)

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

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

答案 3 :(得分:0)

NumberFormatExceptionRuntimeException未选中,因此无需捕获。

如果您不知道选中/未选中Exception是什么2

,请查看[文档]

答案 4 :(得分:0)

  

据我所知,在java中,抛出异常的函数不应该在没有try和catch的情况下编译

是的,只需将exception更改为Checked exception

通过以下内容了解这些内容:

Effective Java Exceptions

Exceptions

答案 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及其子类是未经检查的异常类。这些异常可能发生在您的代码中的任何位置。因此,您可以捕获该异常并继续执行