2021-1-19(java异常体系)


一、前言

在java异常体系中,主要分为两大类,即异常类(Exception)和错误类(Error),它两都继承了Throwable类,而异常与错误最主要的区别在于异常是可恢复的,而当错误发生时,jvm会停止运行,是不可恢复的。

二、Exception(异常类)

1.异常概述

异常主要分为两大类,按照官方给出定义可将其分为Checked异常和No Checked异常。所谓Checked异常是指,在程序运行时可处理也可不处理的异常,其主要是指RunTimeException类及其子类。而Checked异常是指在程序运行时必须要处理的异常,除RunTimeException类及其子类外,包括自定义异常都属于Checked异常。

代码如下(示例):

import java.io.FileNotFoundException;

import com.apesource.demo.exception.CountTooLargeException;

public class Test {
	public static void main(String[] args)  {
		// 如果方法声明中包含Checked 异常类型
		// 则该方法的调用,必须使用try...catch处理
		try {
			dosth();
			donothing();
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (CountTooLargeException e) {
			e.printStackTrace();
		} 
	}
	
	public static void dosth() throws FileNotFoundException{
		int a = 23,b=33;
	
		if(a > b) {
			// 如果抛出的异常对象类型是一个No Checked异常,则可以使用throws声明异常类型
			// throw new NullPointerException();
			
			// 如果抛出的异常对象类型是一个Checked异常,则必须使用throws声明异常类型
			throw new FileNotFoundException();
		}
		
		System.out.println();
	}

2.java异常处理机制

java异常处理主要可分为两种,在当前类中捕获异常或者在抛出异常,让调用该方法的类或方法去处理该异常。

  1. 使用try、catch、finally代码块处理异常。
  • 用于保护可能产生异常的代码
  • catch:用于捕获运行时的"异常对象",并进行处理
  • finally语句块中的代码,无论是否出现异常或return,均执行。

因为在try块中的代码,当产生异常时,会自动跳转至catch块中进行类型匹配,不能保证try块中的代码全部执行完,所以一般将必须要执行的代码都放到finally块中。
代码(示例):

import java.util.IllegalFormatConversionException;

public class Test01 {
	
	public static void main(String[] args) {

		// try : 用于保护可能产生异常的代码
		try {
			int num1 = 12, num2 = 6;

			// 运行时,如果产生异常,系统会根据异常产生原因,创建异常对象
			// 代码执行流程会自动跳转至catch块进行异常类型的匹配
			int result = num1 / num2;
			
			// 在此行代码前,未发生任何异常,本行代码方可执行
			System.out.println("try结束");
			
		} catch (ArithmeticException ex) { // catch:用于捕获运行时的"异常对象",并进行处理
			ex.printStackTrace(); // 打印当前异常的堆栈信息
		} finally {
			// finally语句块中的代码,无论是否出现异常或return,均执行
			// 除非虚拟机退出
			System.out.println("finally.....");
		}
		
		// 在此行代码前,未执行return语句
		System.out.println("程序结束");
		
	}
}
  1. 使用throw关键字将异常抛出,交由使用当前方法的类或方法去处理。
  • throw关键字:方法内部,抛出一个异常对象
  • throws关键字:声明方法"可能"抛出的异常类型

三、(Error)错误类

错误类主要是指一些因电脑自身原因或jvm异常等等所产生的一种错误。
主要特点是不可恢复的,例如OutOfMemoryError:内存溢出错误,只能通过扩展内存的方式去恢复。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值