Java 异常

异常是在程序执行期间发生的意外事件。它会影响程序的指令流,可能导致程序异常终止。

异常可能因多种原因而发生。其中一些是

  • 无效的用户输入
  • 设备故障
  • 网络连接丢失
  • 物理限制(磁盘空间不足)
  • 代码错误
  • 打开不存在的文件

Java 异常层级结构

这是 Java 异常层级结构的简化图。

Exception Hierarchy in Java

从上图可以看出,Throwable 类是层级结构中的根类。

请注意,层级结构分为两个分支:Error 和 Exception。


Errors

Errors 表示无法恢复的状况,例如 Java 虚拟机 (JVM) 内存不足、内存泄漏、堆栈溢出错误、库不兼容、无限递归等。

错误通常超出了程序员的控制范围,我们不应该尝试处理错误。


Exceptions

异常可以被程序捕获和处理。

方法 中发生异常时,会创建一个对象。此对象称为异常对象。

它包含有关异常的信息,例如异常的名称和描述以及异常发生时程序的状.

我们将在下一个教程中学习如何处理这些异常。在本教程中,我们将重点介绍 Java 中不同类型的异常。


Java 异常类型

异常层级结构也有两个分支:RuntimeExceptionIOException


1. RuntimeException

运行时异常是由于编程错误而发生的。它们也称为非检查型异常

这些异常在编译时不会被检查,而是在运行时被检查。一些常见的运行时异常是

  • API 使用不当 - IllegalArgumentException
  • 空指针访问(变量未初始化) - NullPointerException
  • 数组索引越界访问 - ArrayIndexOutOfBoundsException
  • 数字除以 0 - ArithmeticException

你可以这样理解:“如果是运行时异常,那是你的错”。

如果在使用变量之前检查了变量是否已初始化,则不会发生 NullPointerException

如果将数组索引与数组边界进行测试,则不会发生 ArrayIndexOutOfBoundsException


2. IOException

IOException 也称为检查型异常。它们在编译时由编译器检查,并且会提示程序员处理这些异常。

一些检查型异常的示例是

  • 尝试打开一个不存在的文件会导致 FileNotFoundException
  • 尝试读取超出文件末尾

现在我们了解了异常,我们将在下一个教程中学习 异常处理

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战