在本教程中,我们将学习Java中的异常。我们将介绍Java中的错误,异常和不同类型的异常。
异常是程序执行期间发生的意外事件。它影响程序指令流,从而导致程序异常终止。
发生异常的原因有很多。其中包括:
无效的用户输入
设备故障
网络连接丢失
物理限制(磁盘内存不足)
代码错误
打开一个不可用的文件
这是Java中异常层次结构的简化图。
从上图可以看到,Throwable类是层次结构中的根类。
请注意,层次结构分为两个分支:错误(Error)和异常(Exception)。
Error表示不可恢复的情况,例如Java虚拟机(JVM)内存不足,内存泄漏,堆栈溢出错误,库不兼容,无限递归等。
错误通常是程序员无法控制的,我们不应该尝试处理错误。
程序可以捕获并处理异常。
当方法内发生异常时,它将创建一个对象。该对象称为异常对象。
它包含有关异常的信息,例如异常的名称和说明以及发生异常时的程序状态。
在下一个教程中,我们将学习如何处理这些异常。在本教程中,我们现在将重点介绍Java中不同类型的异常。
异常层次结构还具有两个分支:RuntimeException和IOException。
一个运行时异常发生由于编程错误。它们也称为非检查异常。
这些异常不在编译时检查,而是在运行时检查。一些常见的运行时异常是:
API使用不当 - IllegalArgumentException
空指针访问(缺少变量的初始化)- NullPointerException
越界数组访问 - ArrayIndexOutOfBoundsException
将数字除以0 - ArithmeticException
你可以这样想:“如果这是一个运行时异常,那就是你的错”。
如果在使用变量之前检查变量是否已初始化,则不会发生NullPointerException。
如果根据数组边界测试数组索引,则不会发生ArrayIndexOutOfBoundsException。
IOException也称为检查异常。它们由编译器在编译时检查,并提示程序员处理这些异常。
检查异常的一些示例是:
尝试打开不存在的文件会导致 FileNotFoundException
试图读取超过文件结尾的内容
现在我们已经了解了异常,我们将在下一教程中学习处理异常。