CoreJava基础之异常处理(Throwable)

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的区别?

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

程序员巨轮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值