专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 学习攻略 Java学习 简述Java中异常处理的机制

简述Java中异常处理的机制

更新时间:2022-08-08 12:39:48 来源:赢咖4 浏览953次

Java中的异常处理是处理运行时错误的有效手段之一,可以保持应用程序的正常流程。Java 异常处理是一种处理运行时错误的机制,例如 ClassNotFoundException、IOException、SQLException、RemoteException 等。

异常是在程序执行期间(即在运行时)发生的不希望或意外事件,它会破坏程序指令的正常流程。程序可以捕获和处理异常。当方法中发生异常时,它会创建一个对象。该对象称为异常对象。它包含有关异常的信息,例如异常的名称和描述以及异常发生时程序的状态。

发生异常的主要原因

用户输入无效

设备故障

网络连接丢失

物理限制(磁盘内存不足)

代码错误

打开不可用的文件

错误表示Java虚拟机(JVM)内存不足、内存泄漏、堆栈溢出错误、库不兼容、无限递归等不可恢复的情况。错误通常超出程序员的控制范围,我们不应该尝试处理错误.

让我们讨论最重要的部分,即错误和异常之间的区别,如下所示:

错误: 错误表示合理的应用程序不应尝试捕获的严重问题。

异常: 异常表示合理的应用程序可能试图捕获的条件。

异常层次结构

所有异常和错误类型都是Throwable类的子类,后者是层次结构的基类。一个分支由Exception领导。此类用于用户程序应捕获的异常情况。NullPointerException 是此类异常的一个示例。Java 运行时系统 ( JVM ) 使用另一个分支Error来指示与运行时环境本身 (JRE) 相关的错误。StackOverflowError 就是此类错误的一个示例。

例外类型

Java 定义了与其各种类库相关的几种异常类型。Java 还允许用户定义自己的异常。

异常可以分为两种方式:

1.内置异常

检查异常

未经检查的异常

2.用户定义的异常

Java中异常处理的优点如下:

提供完成程序执行

轻松识别程序代码和错误处理代码

错误的传播

有意义的错误报告

识别错误类型

打印异常信息的方法:

1.printStackTrace() - 此方法以异常名称的格式打印异常信息:异常描述、堆栈痕迹。

//program to print the exception information using printStackTrace() method
import java.io.*;
class GFG {
	public static void main (String[] args) {
	int a=5;
	int b=0;
		try{
		System.out.println(a/b);
		}
	catch(ArithmeticException e){
		e.printStackTrace();
	}
	}
}

输出:

java.lang.ArithmeticException: / 由零
在 GFG.main(File.java:10)

2.toString() - 此方法以异常名称:异常描述的格式打印异常信息。

//program to print the exception information using toString() method
import java.io.*;
class GFG1 {
	public static void main (String[] args) {
	int a=5;
	int b=0;
		try{
		System.out.println(a/b);
		}
	catch(ArithmeticException e){
		System.out.println(e.toString());
	}
	}
}

输出:

java.lang.ArithmeticException: / 由零

3.getMessage() - 这个方法只打印异常的描述。

//program to print the exception information using getMessage() method
import java.io.*;
class GFG1 {
	public static void main (String[] args) {
	int a=5;
	int b=0;
		try{
		System.out.println(a/b);
		}
	catch(ArithmeticException e){
		System.out.println(e.getMessage());
	}
	}
}

输出:

/ 由零

JVM 如何处理异常?

默认异常处理:只要在方法内部发生异常,该方法就会创建一个称为异常对象的对象并将其交给运行时系统(JVM)。异常对象包含异常的名称和描述以及发生异常的程序的当前状态。创建异常对象并在运行时系统中处理它称为抛出异常。可能有一个方法列表,这些方法已被调用以获取发生异常的方法。这个有序的方法列表称为Call Stack。现在将发生以下过​​程。

运行时系统搜索调用堆栈以找到包含可以处理发生的异常的代码块的方法。该代码块称为异常处理程序。

运行时系统从发生异常的方法开始搜索,并以调用方法的相反顺序遍历调用Java堆栈

如果它找到合适的处理程序,则将发生的异常传递给它。适当的处理程序意味着抛出的异常对象的类型与它可以处理的异常对象的类型相匹配。

如果运行时系统搜索调用堆栈上的所有方法并且找不到合适的处理程序,则运行时系统将异常对象移交给默认异常处理程序,它是运行时系统的一部分。该处理程序以下列格式打印异常信息并异常终止程序。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>