错误克星-异常机制

1.异常机制(自我防御)

异常处理(exception handling):执行程序,当有错误发生,就可以终止程序,弹出相应的错误。这种反馈称为抛出异常(throwing)。

1.1 异常体系

请添加图片描述

1.2 异常分为Error & Exception

Error:Error类对象由虚拟机生成并抛出,大多数与代码编写者无关。(错误不可查,查了也没用,程序处理不了)(包括内存溢出,虚拟机错误等。程序对其不做处理)。
Exception(重点):是程序本身可以处理的异常。是运行时异常可检查异常

1.3 Exception----运行时候异常&可检查异常

运行时异常(RuntimeException):Exception的子类RuntimeException类及其子类表示“JVM常用操作”引发错误。(例如,使用空值对象引用抛NullPointerException、除数为零抛ArithmeticException、数组越界抛ArrayIndexOutOfBoundException)。
可检查异常(必须处理才能通过编译): 属于Exception类及其子类。

1.4 异常常用的五个关键字

try、catch、finally、throw、throws

1.4.1 try…catch…finally

异常由包含在try块中的语句捕获,catch进行处理。

try{
   语句块;//检查语句块是否有异常
}catch(异常类型 e){
   异常处理块;//根据异常类型进行捕获处理
}finally{//finally不是必须的
    有无异常,都必须执行的程序;
}

1.4.2 throw

使用throw抛出异常对象。

File file3 = new File(file2,"aa.text");//创建一个.text文件
		try {
			file3.createNewFile();
		} catch (IOException e) {
			e.printStackTrace();
		}

1.4.3 throws(潜台词:这活我干不了,你用的时候研究下)

throws在方法上声明抛出的可检查异常的类型。

public void run() throws IOException{
     方法体;
}

如果一个方法被执行时可能生成某种异常,但不能确定如何处理这种异常,则此方法应显式地声明抛出异常,表明该方法将对这些异常进行处理,而由该方法的调用者负责处理
如果调用者也没处理,到运行到出错的为止,抛出异常(1、2、3、4、异常)。

1.4.4 自定义异常

  • 继承异常类(Exception/RuntimeException)
public class MyException extends RuntimeException{
     
}

  • 调用父类RuntimeException的有参构造方法
public MyException(String msg){
 super(msg);
 }

1.4.5 try…with…resource(打开了外部资源的时候用)

请添加图片描述

如果打开外部资源(文件、数据库链接、网络连接等),必须在使用完后手动关闭,因为它们不由JVM管理,无法享用GC,会导致连接池溢出等严重问题。

1.4.6 lombok简化异常(YYDS)

@SneakyThrows(添加都方法上面,可以代替try{}catch{}的工作)
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值