当前位置: 首页 > 知识库问答 >
问题:

为什么是整数。parseInt正在编译而没有try-catch?

秦炜
2023-03-14

据我所知,在java中,如果没有try-and-catch或其上方的函数减速,则不应编译引发异常的函数。那么,为什么这个代码是合法的,不会被压碎呢?

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

即使是整数。parseInt()引发:NumberFormatException-如果字符串不包含可解析的整数。

共有3个答案

东郭昌胤
2023-03-14

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

在java中,未经检查的异常也会在不使用try-catch的情况下编译

师曦
2023-03-14

从Java语言规范:

未选中的异常类是运行时异常类和错误类。

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

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

换言之,每隔一段时间就可以扔掉。它们必须被抛出(抛出)或捕获。

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

端木鹏
2023-03-14

<代码>数字格式异常(NumberFormatException)扩展了运行时异常(RuntimeException),这是一种不需要捕获的未经检查的异常。

Java教程节选

由于Java编程语言不需要方法来捕获或指定未经检查的异常(RuntimeException、Error及其子类),程序员可能会试图编写只抛出未经检查的异常的代码,或者让他们的所有异常子类继承自RuntimeException。这两种快捷方式都允许程序员编写代码,而不用担心编译器错误,也不用担心指定或捕获任何异常。完整文章

NumberFormatException Api文档

 类似资料:
  • 我试图运行下面的代码,当使用int numTest=sc.nextInt()时不起作用,而当使用int numTest=Integer.parseInt(sc.nextLine())时正常工作。但是我试图在这里只得到一个整数值,我可以用它来获取用户设置的字符串数。那么为什么我不能使用sc.nextInt()呢?

  • 我使用IntelliJ进行java开发。我想在我只有shell访问权限的另一台主机上运行我的应用程序。 当我在本地运行应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到: 文件位于同一目录中: 我也不能在本地编译,除非它来自IDE,所以我假设我只是没有做正确的事情。我错过了什么?我只想能够从shell运行我的应用程序,我真的不在乎如何运行。

  • 问题内容: 为什么在下面的代码中没有出现编译错误?我得到一个有点混乱的地方。是因为它们有关系吗? 问题答案: 为什么在下面的代码中没有出现编译错误? 因为编译器只关心您要强制转换的表达式的静态类型。 看这两行: 您 知道在第二行中,由于第一行,该值仅引用类型的对象,而编译器则没有。对于所有的编译器知道(编译第二线时),它 可能 实际上已经: …哪里有扩展和实现的类。因此它是有效的(在编译时),以铸

  • 为什么方法编译成功,而没有成功?

  • 下面的try with resources语句是来自Java文档的示例 根据文件, 用资源尝试语句确保每个资源在语句末尾关闭。 我的问题是,为什么我需要在try关键字之后立即在括号内声明资源。(如上面的BuffereReader) BufferReader实现了java。lang.AutoCloseable 所以为什么不支持这样的事情, 一旦退出尝试,就隐式关闭资源对象。(正如它所实现的自动关闭)