欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

异常处理流程

程序员文章站 2024-03-24 08:54:40
...

异常类结构

     来观察两个异常类的继承关系

异常处理流程

Ø  可以发现所有的异常类型最高的继承类是Throwable,并且通过doc文档可以发现在Throwable下有两个子类:

Ø  Error:指的是JVM错误,这个时候的程序并没有执行,无法处理;

Ø  Exception:指的是程序运行中产生的异常,用户可以使用异常处理格式处理。

 

异常的处理完整流程

异常处理流程

       当程序在运行的过程之中出现了异常后,那么会由JVM自动根据异常的类型实例化一个与之类型匹配的异常类对象(此处用户不用去关心如何实例化对象,由JVM负责处理);

        产生了异常对象之后会判断当前的语句上是否存在有异常处理,如果现在没有异常处理,那么就交给JVM进行默认的异常处理,处理的方式:输出异常信息,而后结束程序的调用;

        如果此时存在有异常的捕获操作,那么会由try语句来捕获产生的异常类实例化对象,而后与try语句后的每一个catch进行比较,如果现在有符合的捕获类型,则使用当前catch的语句来进行异常的处理,如果不匹配,则向下继续匹配其它的catch;

       不管最后异常处理是否能够匹配,那么都要向后执行,如果此时程序中存在有finally语句,那么就先执行finally中的代码。但是执行完finally语句后需要根据之前的catch匹配结果来决定如何执行,如果之前已经成功的捕获了异常,那么就继续执行finally之后的代码,如果之前没有成功的捕获异常,那么就将此异常交给JVM进行默认处理(输出异常信息,而后结束程序执行)

 

使用Exception处理异常

public class TestDemo {
	public static void main(String args[]) {
		System.out.println("1、除法计算开始。");
		try {
			int x = Integer.parseInt(args[0]);	// 接收参数并且转型
			int y = Integer.parseInt(args[1]);	// 接收参数并且转型
			System.out.println("2、除法计算:" + (x / y));// 此处产生异常
			// 异常产生之后的语句将不再执行,此处在try中产生异常,所以下面的输出不会执行 
			System.out.println("ww");
		} catch (Exception e) {		// 处理所有异常类型
			e.printStackTrace();
		} finally {
			System.out.println("### 不管是否出现异常我都执行!") ;
		} 
		System.out.println("3、除法计算结束。");
	}
}