Java编程思想笔记(十二)—— 通过异常处理错误

感悟

异常机制可以使你的程序健壮,同时可以快速方便的查出问题的原因,是改善程序的重要手段。同时异常的思维常常容易让人忽视,所以本章重点学习语法和异常的知识体系,学会自定义异常。
还有之前已经写过一篇,这里也复习一下
Java异常的一些笔记(二)

笔记
  • 12.1 概念
了解就好
  • 12.2 基本异常
    1)异常参数
了解抛出异常用法和构造参数 throw new NullPointerException(“t=null”);
  • 12.3 捕获异常
    1)try块
    2)异常处理程序
掌握语法即可
  • 12.4 创建自定义异常
    1)异常与记录日志
1、掌握自定义异常
2、e.printStackTrace()默认输出到标准错误
3、e.printStackTrace(System.out)输出到控制台
4、把输出转成toString理解就好,涉及输入输出流,且后续框架都直接封装好了。
5、了解自定义构造参数和e.getMessage(),获取构造时候的属性值。
  • 12.5 异常说明
void f() throws xxx {  // 
上面的写法虽然声明异常,但是却不会再向上抛,这是一种占用作弊写法,用处一是可以占个位置,二是可以消除编译器强制检查异常
  • 12.6 捕获所有异常
    1)栈轨迹
    2)重新抛出异常
    3)异常链
1、Exception是与编程有关所有异常基类,所以能捕获所有异常。常用方法主要是它的基类Throwable的方法:getMessage() 以及printStackTrace()、printStackTrace(PrintStream)、printStackTrace(java.io.PrintWriter)、fillInStackTrace()。
2、异常捕获后,重新再抛出异常,通常只会保留原异常信息,用 (Exception)e.fillInStackTrace()相当于从当前捕获处抛异常。如果捕获后,抛出另一种异常,作用与改方法相似。
3、基于第二点、要保留前面异常信息,称为异常链,
普通异常用法:dfe.initCase(new NullPointerException()),
Error、Exception、RuntiomeException用法: throw new RuntimeException(e)
  • 12.7 Java标准异常
    1)特例:RuntimeException
理解要捕获的异常,主要是和Exception打交道
RuntimeException 是不受检查的异常,不用可以去捕获
  • 12.8 使用finally进行清理
    1)finally用来做什么
    2)在return中使用finally
    3)缺憾:异常丢失
理解finally抛出不抛出总能执行,主要用于清理,回收资源
在finally抛异常、和return,会产生一些异常丢失情况,留心即可。
  • 12.9 异常的限制
1、引出了继承派生类中复写方法中声明异常机制
2、继承类中可以缩小基类中声明的异常,但是捕获中不能减少。
3、继承类中不能声明基类没有的异常。
4、继承基类加实现接口中,只能声明基类中的异常,或者不声明,
5、构造器不受此异常机制限制
  • 12.10 构造器
创建需要清理的对象构造器如果发生异常,应该用惯用法,紧接着用try-finally语句块
  • 12.11 异常匹配
顺序优先、基类匹配
  • 12.12 其他可选方式
    1)历史
    2)观点
    3)把异常传递给控制台
    4)把“被检查的异常”转换为“不检查的异常”
只有在你知道的如何处理的情况下才捕获异常
被检查的异常包进 RuntimeException
可以使用 re.getCause提取被RuntimeException包装的异常
  • 12.13 异常使用指南
了解就好
  • 12.14 总结
了解就好
1、异常是Java不可分割的一部分
2、集中精力处理要解决的事情
3、从错误中恢复
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值