Java 中的内置异常2025年5月20日 | 阅读 7 分钟 在 Java 库中已经存在的 异常 被称为 内置异常。这些异常能够定义错误情况,以便我们能够理解出现此错误的原因。 内置异常的类型内置异常有两种类型:
![]() 已检查异常已检查 异常被称为 编译时 异常,因为这些异常在编译时由编译器检查。编译器会确保程序员是否处理了异常。程序员必须处理该异常;否则,系统将显示编译错误。 已检查异常列表
已检查异常示例示例输出 Main.java:5: error: unreported exception FileNotFoundException; must be caught or declared to be thrown file_data = new FileInputStream("C:/Users/Desktop/Hello.txt"); ^ Main.java:7: error: unreported exception IOException; must be caught or declared to be thrown while(( m = file_data.read() ) != -1) { ^ Main.java:10: error: unreported exception IOException; must be caught or declared to be thrown file_data.close(); ^ 3 errors 在上面的代码中,我们尝试读取 Hello.txt 文件以在控制台上显示其数据。运行上述程序时,我们会收到以下异常:
处理已检查异常基本上有两种方法可以处理这些异常。
使用 throws 关键字 异常发生在 main() 方法中。我们可以通过使用 throws 关键字在 main() 方法中声明异常来消除这些编译错误。我们只声明 IOException,而不声明 FileNotFoundException,因为存在父子关系。IOException 类是 FileNotFoundException 类的父类,因此 IOException 会自动处理此异常。我们将按以下方式声明异常: 示例当我们通过使用 throws 关键字处理 IOException 并编译运行上述代码时,我们会得到以下输出: Hello Java 使用 try-catch 块 我们也可以使用 try-catch 块 来处理此异常。但是,我们上面使用的方式不正确。我们必须为每个异常提供有意义的消息,这样更容易理解错误。我们将按以下方式使用 try-catch 块: 示例输出 File Not Found! Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.io.FileInputStream.read()" because "<local1>" is null at Main.main(Main.java:12) 我们将在控制台上看到正确的错误消息 “文件未找到!”,因为该位置没有 Hello.txt 文件。我们在控制台上收到以下消息: 未检查异常未检查 异常恰好与 已检查 异常相反。它也称为运行时异常。编译器不会在编译时检查这些异常。简单来说,如果程序抛出未检查异常,即使我们没有处理或声明它,程序也不会给出编译错误。通常,当用户在与程序交互时提供错误数据时,就会发生这种情况。 注意:由于父子关系,RuntimeException 类能够解决所有未检查的异常。未检查异常列表
未检查异常示例ArithmeticException:除以零 示例输出 Runtime Error: Exception in thread "main" java.lang.ArithmeticException: / by zero at Main.main(Main.java:7) 在上面的程序中,我们将 35 除以 0。代码会成功编译,但会在运行时抛出 ArithmeticException 错误。将数字除以 0 会抛出除零异常,这是一个未检查异常。 让我们看另一个未检查异常的例子。 ArrayIndexOutOfBoundsException 示例示例输出 Runtime Error: Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 7 out of bounds for length 6 at Main.main(Main.java:6) 在上面的代码中,我们试图获取位于位置 7 的元素,但数组的长度是 6。代码编译成功,但在运行时抛出 ArrayIndexOutOfBoundsException。 处理未检查异常Java 中的未检查异常是运行时异常,不需要在方法签名中捕获或声明。它们通常表示编程错误,例如 NullPointerException、ArrayIndexOutOfBoundsException 或 IllegalArgumentException。
已检查异常与未检查异常的区别
我们不希望并且会限制程序正常执行的 Bug 或错误被称为 异常。 Java 已检查和未检查异常 MCQs1. 下列哪项是已检查异常?
答案:1) 解释:IOException 是已检查异常,其他三个是未检查异常。 2. 下列哪项是未检查异常?
答案:2) 解释:NumberFormatException 是未检查异常,其他三个是已检查异常。 3. 下列哪个异常不需要在方法签名中捕获或声明?
答案:3) 解释:Java 中的未检查异常是运行时异常,不需要在方法签名中捕获或声明。它们通常表示编程错误,例如 NullPointerException、ArrayIndexOutOfBoundsException 或 IllegalArgumentException。 4. 如何处理已检查异常?
答案:4) 解释:基本上有两种方法可以处理已检查异常:使用 throws 关键字和 try-catch 块。 5. 下列哪个类是所有异常和错误的父类?
答案:1) 解释:在 Java 中,Throwable 是所有异常和错误的父类。它有两个直接子类: Exception:表示应用程序中可恢复的条件。已检查异常继承此类。 Error:表示严重的 JVM 相关问题,例如 OutOfMemoryError。 下一主题Java 中的 Bully 算法 |
在本文中,我们将了解 Java 中的单例枚举。您将能够理解如何使用它、它的目的以及最重要的是它的优点和缺点。让我们来了解一下编程中的单例是什么。单例 单例类是一个...
阅读 4 分钟
尤其是在应用程序中,管理时间和日期是 Java 中一项非常常见的任务。JDK 8 包含时间包,其中包含用于处理时间和日期的类集。其中,LocalTime 类特别创建用于...
5 分钟阅读
在计算机科学中,特别是在密码学、数论和竞赛编程中,在大型模数下乘以大整数是一个关键问题。在处理大数时,直接乘法可能导致整数溢出或计算效率低下。为了解决这个问题,使用模运算...
5 分钟阅读
如何在 Java 中获取字符串输入 Java Line() 方法 Scanner 类的 Line() 方法用于从用户那里获取字符串。它定义在 java.util.Scanner 类中。Line() 方法读取文本直到行尾。读取该行后,...
阅读 2 分钟
Java Spring 的优缺点 Spring 框架使 Java 编程对每个人来说都更快、更容易、更安全。它的简单性、速度和生产力使其成为世界上最受欢迎的框架。在本节中,我们将讨论 Java Spring 的优点和缺点。Java Spring 有一个...
阅读 3 分钟
矩阵指数是线性代数中的一个基本概念,在量子力学、控制理论和微分方程等领域都有应用。它将标量指数函数 (e^x) 推广到矩阵。对于方阵 (A),其指数 (e^A ) 由以下无穷级数定义:...
7 分钟阅读
Java 数据库连接 (JDBC) 是一个 Java API,它使 Java 程序能够访问和操作存储在数据库中的数据。JDBC 提供了一组通用的类和接口来连接数据库、运行 SQL 命令以及检索数据。称为 JDBC 驱动程序的软件元素...
阅读 4 分钟
? Null Pointer Exception 是一种运行时异常,当 Java 程序尝试使用包含 null 值的对象引用时抛出。在以下情况下可以抛出 Null Pointer Exception:1. 使用对象调用方法...
阅读 4 分钟
? 在 Java 编程世界中,构造函数是用于初始化对象的特殊方法。当使用 new 关键字创建对象时,会调用它们,并且它们负责设置对象的初始状态。构造函数通常是公共的,并且与...
阅读 3 分钟
java.util.function 包首次发布于 Java 8,其中包含 LongConsumer 接口,该接口用于在 Java 中进行函数式编程。它是接受单个 long 值参数但不输出任何内容的函数的一个示例。LongConsumer 类型对象...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India