CoreJava基础之异常处理(Throwable)

本文深入讲解异常处理的概念,包括异常的分类、产生、传递及处理方式。探讨未检查异常与已检查异常的区别,以及如何通过声明抛出和捕获异常来增强程序的健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念:

目的:提高程序的容错性、健壮性

异常:程序的运行过程中出现的意外情况

异常处理:事先为程序运行中可能出现的异常所做的预案

【重点】异常处理并非避免异常而是应对异常情况

2.异常的分类

 

未检查异常已检查异常
可以避免不可避免
可处理可不处理必须处理
发生原因来自于代码内部发生原因来自于代码外部

3.异常的产生和传递

throw Throwable对象   抛出一个异常对象
//throw语句的作用等同于return语句

throw语句的作用等同于return语句

异常对象的传递,视同于方法的返回值传递,沿着方法的调用链向上传递

4.异常的处理

(1)声明抛出

//方法声明:
    修饰符<泛型>  返回值类型    方法名(形参列表)   抛出的异常
//throws后可抛多个异常用逗号隔开

方法的覆盖:

①方法名、参数表必须相同;

②访问修饰符相同或更宽;

③返回值类型相同或是父类方法返回值子类;(Since 5.0)

④子类方法抛出的异常的范围不能比父类更宽,子类方法只能抛出比父类方法相同或更少异常。

(2)捕获异常(一次异常一次catch,try后可跟多个catch)

//捕获异常一般格式:
try{    代码块}catch(异常的形参){    }catch(异常的形参){    }

①可以同时捕获子类异常和父类异常,但必须先捕获子类异常,再捕获父类异常;

②如果多个catch的代码相同,name多个catch可以合并在一个catch中(Since 7.0);

try{
    System.out.println("m1");
    mb(i);
    System.out.println("m2");
}catch(IOException|MyException|RuntimeException e){
    System.out.println("catch Exception");
    e.printStackTrace();
} 

③printStackTrace():打印异常的栈追踪信息,在自定义异常时,应该添加字符串参数的构造方法,以设置异常对象的message属性;

④finally子句:无论如何都会执行的代码(通常用于释放资源)

//(1)
try{}catch(){}
//(2)
try{}catch(){}finally{}
//(3)
try{}finally{}
//(3)中的try无法捕捉异常,只是为了保证finally里的代码一定要执行

面试题:

final、finalize和finally的区别?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员巨轮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值