Java中的异常处理是什么样的?
Java 中的异常处理是处理运行时错误以保持应用程序正常流程的有效手段之一,异常是不需要的或意外的事件,它发生在程序执行期间,即在运行时,它会扰乱程序指令的正常流程。程序可以捕获和处理异常。当方法中发生异常时,它会创建一个对象。该对象称为异常对象。它包含有关异常的信息,例如异常的名称和描述以及发生异常时程序的状态。
出现异常的主要原因
- 无效的用户输入
- 设备故障
- 失去网络连接
- 物理限制(磁盘内存不足)
- 代码错误
- 打开一个不可用的文件
错误表示不可恢复的情况,例如 Java 虚拟机 (JVM) 内存耗尽、内存泄漏、堆栈溢出错误、库不兼容、无限递归等,错误通常是程序员无法控制的,我们不应该试图去处理错误.
Error 和 Exception 之间的区别:
- 错误: 错误表示一个合理的应用程序不应尝试捕获的严重问题。
- 异常: 异常表示合理的应用程序可能会尝试捕获的情况。
异常层次结构
Java 中有两种类型的异常:已检查(编译时)异常和未检查(运行时)异常。
检查异常(编译时异常)
必须在编译时捕获和处理已检查的异常,如果编译器没有看到tryorcatch块或throws关键字来处理已检查的异常,它会抛出一个编译错误,检查异常通常是由代码外部的错误引起的,例如丢失文件、无效类名和网络错误。
未经检查的异常(运行时异常)
未经检查的异常不需要显式处理,它们发生在执行时,也称为运行时。这些异常通常可以通过良好的编码实践来避免。它们通常是由编程错误引起的,例如逻辑错误或 API 使用不当。这些异常在编译时被忽略。
错误
人们通常将“错误”和“异常”通俗地称为同一事物,但是,在 Java 中,这些是不同的概念。错误由 Java 虚拟机抛出,无法捕获或处理。它们派生自 java.lang.Error,它们是由于应用程序运行环境中的某些错误而发生的。例如,堆栈溢出和内存不足异常是导致应用程序退出的环境错误。
Java 中的异常处理
默认异常处理:无论何时在方法内部,如果发生异常,该方法都会创建一个称为异常对象的对象,并将其交给运行时系统 (JVM)。异常对象包含异常的名称和描述以及发生异常的程序的当前状态。创建异常对象并在运行时系统中处理它称为抛出异常。可能有一个已调用的方法列表,以到达发生异常的方法,这个有序的方法列表称为Call Stack。现在将发生以下过程:
- 运行时系统搜索调用堆栈以找到包含可以处理发生的异常的代码块的方法。代码块称为异常处理程序。
- 运行时系统从发生异常的方法开始搜索,并按照调用方法的相反顺序遍历调用堆栈。
- 如果找到合适的处理程序,则将发生的异常传递给它。合适的处理程序意味着抛出的异常对象的类型与它可以处理的异常对象的类型相匹配。
- 如果运行时系统搜索调用堆栈上的所有方法,但找不到合适的处理程序,则运行时系统将 Exception Object 移交给默认的异常处理程序,它是运行时系统的一部分,该处理程序以下列格式打印异常信息并异常终止程序。
Java异常处理的优点
异常处理的优点是:
- 异常处理帮助我们将错误处理代码与正常代码分开。
- 通过从程序的主线中删除错误处理代码来澄清代码
- 增强了可读性。
- 使程序清晰、健壮、容错。
- 点赞
- 收藏
- 关注作者
评论(0)