《Java核心技术 卷Ⅰ 》第七章笔记——异常、断言和日志

目录

 

异常概述

异常处理

异常处理的技巧


*本笔记仅记录了异常部分的内容

异常概述

1.异常的定义:程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。

2.异常对象都是派生于Throwable类的一个类的实例。

3.Throwable分类:

  • Error:严重错误Error,无法通过处理的错误,只能事先避免。

  • Exception:表示异常,异常产生后程序员可以通过代码的方式纠正,使程序继续运行,是必须要处理的。

4.Exception分类:

  • 编译时期异常:checked异常。在编译时期,就会检查,如果没有处理异常,则编译失败。(如日期格式化异常)

  • 运行时期异常:runtime异常。在运行时期,检查异常.在编译时期,运行异常不会编译器检测(不报错)。(如数学异常)

5.Throwable中的常用方法:

  • public void printStackTrace():打印异常的详细信息。

    包含了异常的类型,异常的原因,还包括异常出现的位置,在开发和调试阶段,都得使用printStackTrace。

  • public String getMessage():获取发生异常的原因。

    提示给用户的时候,就提示错误原因。

  • public String toString():获取异常的类型和异常描述信息(不用)。

6.不需要声明Java的内部错误,即从Error类继承的异常,我们对这些异常无法控制。

7.不应使用从RuntimeException中继承的非检查型异常。因为这些运行时的错误完全在我们的控制之中,应该多花时间修正这些错误,而不仅仅是声明这些错误有可能发生。

异常处理

1.如果子类覆盖了超类的方法,子类方法中声明的检查型异常不能比超类方法中声明的异常更通用,如若超类没有声明任何类型的异常,子类也不能抛出任何类型的异常。

2.finally子句包含return语句时,会遮蔽catch或try块的返回值。

3.finally子句主要用于清理资源,不要把控制流程的语句(return,throw,break,continue)放在finally中。

4.finally子句的使用可以被try-with-resources语句代替,其基本形式为:

try (Resources res = ...)
{
    work with res...
}

try块退出时,会自动调用res.close()。也可以在try后的括号中使用分号间隔,添加多个资源。

异常处理的技巧

1.异常处理不能代替简单的测试

与完成简单的测试相比,捕获异常所花费的时间大大超过了前者。因此,只在异常情况下使用异常。

2.不要过分地细化异常

这种编程方式将导致代码量的急剧膨胀。时刻记住异常处理的一个承诺:将正常处理与错误处理分开。

3.充分利用异常层次结构

选择最合适的异常类进行处理,必要时自己创建异常类。

4.不要压制异常

如果认为异常非常重要,即使它发生的概率很小,也应该为它适当地进行处理。

5.在检测错误时,“苛刻”要比放任更好

6.不要羞于传递异常

5、6可以归纳为“早抛出,晚捕获

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值