(第七章)异常、断言和日志

第七章异常、断言和日志

目录

第七章异常、断言和日志

1、处理错误

1.1异常分类

1.2声明受查异常

1.3创建异常类

2、捕获异常

2.1捕获异常

2.2再次抛出异常与异常链

2.3finally子句

2.4分析堆栈轨迹元素

3、使用异常机制的技巧

4、使用断言

4.1断言的概念

4.2启用和禁用断言

4.3使用断言完成参数检查

5、记录日志

5.1基本日志

5.2高级日志

5.3日志记录说明


1、处理错误

如果由于出现错误而使得某些操作没有完成,程序应该:

  • 返回到一种安全状态,并能够让用户执行一些其他的命令;或者
  • 允许用户保存所有操作的结果,并以妥善的方式终结程序。

异常处理的任务就是讲控制权从错误产生的地方转移给能够处理这种情况的错误处理器。为了能够在程序需中处理异常情况,必须研究程序中可能会出现的错误和问题,以及哪些问题需要关注。

(第七章)异常、断言和日志_第1张图片

1.1异常分类

在Java程序设计语言中,异常对象都是派生于Throwable类的一个实例。

(第七章)异常、断言和日志_第2张图片

Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。应用程序不应该跑出这种类型的对象。如果出现了这样的内部错误,除了通告用户,并尽力使程序安全的终止外,再也无能为力了。这种情况很少见。

(第七章)异常、断言和日志_第3张图片

Java语言规范将派生于Error类或RuntimeException类的所有异常称为非受查(unchecked)异常,所有的其他异常称为受查(checked)异常。

1.2声明受查异常

在自己编写方法时,不必将所有可能抛出的异常都进行声明。至于什么时候需要在方法中用throws子句声明异常,什么异常必须使用throws子句声明,需要记住在遇到下面4种情况时应该抛出异常:

(第七章)异常、断言和日志_第4张图片

总之,一个方法必须声明所有可能抛出的受查异常,而非受查异常要么不可控制(Error),要么就应该避免发生(RuntimeException)。如果方法没有声明所有可能发生的受查异常,编译器就会发生一个错误信息。

(第七章)异常、断言和日志_第5张图片

1.3创建异常类

只需定义一个派生于Exception的类,或者派生于Exception子类的类,定义的类应该包含两个构造器,一个是默认构造器;另一个是带有详细描述信息的构造器(超类Throwable的toString方法将会打印出这些详细信息,这在调试中非常有用)。

2、捕获异常

2.1捕获异常

(第七章)异常、断言和日志_第6张图片

如果在try语句中的任何代码抛出了一个在catch子句中说明的异常类,那么

1)程序将跳过try语句块的其他代码

2)程序将执行catch子句中的处理器代码

如果在try语句块中的代码没有抛出任何异常,那么程序将跳过catch子句。如果方法中的任何代码抛出了一个在catch子句中没有声明的异常类型,那么这个方法就会立即退出。

2.2再次抛出异常与异常链

在catch子句中可以抛出一个异常,这样做的目的是改变异常的类型。

(第七章)异常、断言和日志_第7张图片

2.3finally子句

不管是否有异常被捕获,finally子句中的代码都被执行。

2.4分析堆栈轨迹元素

(第七章)异常、断言和日志_第8张图片

3、使用异常机制的技巧

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

2.不要过分的细化异常

3.利用异常层次结构

4.不要压制异常

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

6.不要羞于传递异常

4、使用断言

4.1断言的概念

断言机制允许在测试期间向代码中插入一些检查语句。当代码发布时,这些插入的检查语句将会被自动地移走。

Java语言引入了关键字assert。这个关键字有两种形式:

assert 条件:和 assert 条件 :表达式:

这两种形式都会对条件进行检测,如果结果为false,则抛出一个AssertionError异常。在第二种形式中,表达式将被传入AssertionError的构造器,并转换成一个消息字符串。

4.2启用和禁用断言

(第七章)异常、断言和日志_第9张图片

4.3使用断言完成参数检查

(第七章)异常、断言和日志_第10张图片

5、记录日志

记录日志API的优点:

(第七章)异常、断言和日志_第11张图片

5.1基本日志

(第七章)异常、断言和日志_第12张图片

5.2高级日志

(第七章)异常、断言和日志_第13张图片

(第七章)异常、断言和日志_第14张图片

(第七章)异常、断言和日志_第15张图片

5.3日志记录说明

(第七章)异常、断言和日志_第16张图片

(第七章)异常、断言和日志_第17张图片

(第七章)异常、断言和日志_第18张图片

 

 

 

你可能感兴趣的:((第七章)异常、断言和日志)