javaSE基础_异常处理

什么是异常

运行期间出现的错误,而不是编译时的语法错误。

异常类的体系结构

在这里插入图片描述

异常类型

非检查性异常说明
RuntimeException java.lang包中多数异常的基类
ArithmeticException算术错误,如除以 0
IllegalArgumentException方法收到非法参数
ArrayIndexOutOfBoundsException数组下标出界
NullPointerException 试图访问 null对象引用
检查性异常说明
ClassNotFoundException无法找到想要创建对象的类文件
IOException I/O异常的根类
FileNotFoundException不能找到文件
EOFException文件结束
IllegalAccessException对类的访问被拒绝
NoSuchMethodException请求的方法不存在
InterruptedException线程中断

处理异常流程

抛出异常–》捕获异常–》处理异常

try…catch语句与finally语句

积极处理(自行处理);finally不是必须的。
try{
可能出异常的代码;
}cath(异常类型 异常名){
处理异常的代码;
}finally{
始终执行的代码————通常用来关闭资源或释放资源;
}
注意:
1.try与catch必须一起使用,且之间不能添加任何带按摩
2.catch可以定义多个catch捕获不同的异常类型
3.catch中的异常必须按照从小到大的顺序排序
4.对应finally代码中的语句,即使try和catch的代码块中使用return语句
或break语句,相关的finally代码块都会执行
5.当try或catch代码块中执行了System.exit(0);时,finally代码块不会被执行。
例如

try {
			//System.exit(0);
			
			FileInputStream file=new FileInputStream("说明.txt"); //不能找到文件
			int[] j=new int[] {12,23,45}; //数组越界
			System.out.println("代码执行完毕");
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (ArrayIndexOutOfBoundsException e) {
			System.out.println("数组越界异常");
		} catch (Exception e){
			System.out.println("最大异常类"); //catch从小到大排序
		} finally {
			System.out.println("这里是finally代码块");
		}

throws关键字与throw语句

throws关键字(回避异常,消极异常)

定义: 发生异常时,自身对异常不处理,由调用方法的对象处理
作用: 定义在方法的声明上,告诉调用者可能抛出某项异常
方法中如果用throws关键字抛出:
  非检查性异常: 上一级去除异常,直到不抛出异常;
  检查性异常:

  • 在调用该函数内try-catch,把异常处理掉。那么不往上一级抛出异常,程序正常执行,上一级方法并不知道曾经产生异常。
  • 用throws声明方法抛出异常,不进行处理。谁调用谁负责处理
  • 覆盖方法抛出异常时,可以抛出与被覆盖方法相同的异常或者被覆盖方法异常的子类异常。
    格式: 方法() throws 异常类型 { 发生异常的代码块;代码块…}
public static void check() throws FileNotFoundException {
		FileInputStream file=new FileInputStream("说明.txt");
}
throw语句

作用: 抛出特定的异常类型;
格式: throw 异常类的对象名

throw new NullPointerException();

注意:

  • throw一旦抛出异常,后面的语句就不再执行。
  • throw语句用在方法体内,表示抛出异常,由方法体内的语句处理。不能单独使用,要么和try… catch…一起使用,要么和throws一起使用。
  • throw语句的操作数一定是Throwable类类型或Throwable子类类型的一个对象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值