软件构造学习笔记-第十二周

本周介绍了异常以及异常的处理。Java的异常机制将处理异常的代码整合到一个代码块中,而不是通过if-else进行处理,提高了代码整体的简洁性。同时,异常机制可以更加详细地说明错误类型、引起错误的位置、错误信息,对程序健壮性十分有帮助。

异常

1.Java“异常”的分类
在这里插入图片描述
分为Error和Exception(又分为RuntimeException和其它Exception),其中虚线部分(unchecked exception)不需显式catch。
2.运行时异常由程序员在代码中处理不当造成,其它异常由外部原因造成。
3.运行时异常不应该catch,而是通过修改代码消除。其它异常需要catch,如果不捕获则编译无法通过,类似于静态类型检查。
4.异常是为了增强程序健壮性;断言为了增强程序正确性。

处理异常(针对checked exception)

1.当要决定采用checked exception还是unchecked exception时,看异常由谁引起的。如果客户端代码不能做任何补救措施,则采用uncheck exception;如果客户端可以根据异常信息补救,则采用checked exception。
2.客户端应该从checked exception中获取有价值的信息,利用异常返回的信息明确操作失败的原因。
3.checked exception是可预料但无法预防的。如果做不到这一点则使用unchecked exception。
4.两种异常的对比

5.方法应该throws的异常种类:该方法调用的其它方法抛出了一个checked exception(从别处传来的异常);当前方法检测到错误并使用throw抛出一个checked exception(本身造成的异常)
6.捕获异常时,按照从具体到宽泛的顺序编写catch块
7.可以在catch块中继续抛出异常(为了细化异常种类),但是需要保留根异常

LSP原则下的异常

核心是子类型可以替代父类型,即声明父类型,赋值子类型
1.如果子类型重写了父类型的方法,那么子类型方法抛出的异常不能比父类型抛出异常的类型更宽泛。
2.子类型方法可以抛出更具体的异常,也可以不抛出异常。
3.如果父类型的方法未抛出异常,子类型方法也不能抛出异常。可以理解成未抛出异常是最具体的异常。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值