读《Java核心技术 卷I》第七章 异常、断言和日志
2021/11/14 11:11:28
本文主要是介绍读《Java核心技术 卷I》第七章 异常、断言和日志,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
第七章 异常、断言和日志
异常
在Java程序设计语言中,异常对象都是派生与Throwable类的一个类实例。
所有的异常都是有Threwable继承而来,但在下一层立即分解为两个分支:Error和Exception。
Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误。
Exception分成两个分支Runtimeable和IOException
throws异常抛出
以下4中情况会抛出异常:
-
调用了一个抛出检查型异常的方法,例如,FileInputStream构造器
-
检测到一个错误,并且利用throw语句抛出一个检查型异常
-
程序出现错误,例如,a[-1]=0会抛出一个非检查型异常
-
Java虚拟机或运行时库出现内部错误。
异常捕获
要想捕获一个异常,需要设置try/catch语句块。
try{
code}catch(ExceptionType e){
handler for this type
}
如果try语句块中的任何代码抛出了catch子句中指定的一个异常类,那么
-
程序将跳过try语句块的其余代码。
-
程序将执行catch子句中的处理器代码。
如果try语句中的代码没有抛出任何异常,那么程序将跳过catch子句。
不管是否有异常被捕获,finally子句中的代码都会执行。
var in =new FileInputStream;
try{
// 1
code that might thorw exceptions
//2 }catch(IOException e){
// 3
show error message
//4 }
finally{
//5
in.close;
}
//6
这个程序可能在以下3种情况执行finally语句
-
代码没有抛出异常。在这种情况下,程序首先执行try语句块中的全部代码,然后执行finally子句中的代码。随后,继续执行finally子句之后的第一条语句。执行顺序1、2、5、6
-
代码抛出一个异常,并在一个catch子句中捕获。在上面的示例中就是IOException异常。在这种情况下,程序将执行try语句块中的所有代码,直到抛出异常为止。此时,将跳出try语句块中的剩余代码,转去执行与该异常匹配的catch子句中的代码,最后执行finally子句中的代码。
如果catch子句抛出一个异常,异常将被抛出到这个方法的调用者。执行顺序则只是1、3、5。
如果catch子句没有抛出异常,程序将执行finally子句之后的第一条语句。执行顺序是1、3、4、5、6。
-
代码抛出一个异常,但没有任何catch子句捕获这个异常。在这种情况下,程序将执行try语句块中所有语句,直到抛出异常为止。此时,将跳过try语句块中的剩余代码,然后执行finally子句中的语句,并将异常抛回给这个方法的调用者。执行顺序是1、5。
断言
在一个具有自我保护能力的程序中,断言很常用。
断言机制允许在测试期间向代码中插入一些检查,而在生产代码中会自动删除这些检查。
关键字assert,两种形式:
assert condition ;
assert condition :expression ;
日志
日志API主要优点:
-
可以很容易地取消全部日志记录,或者仅仅取消某个级别以下的日志,而且可以很容易地再次打开日志开关。
-
可以很简单地禁止日志记录,因此,将这些日志代码留在程序中的开销很小。
-
日志记录可以被定向到不同的处理器,如在控制台显示、写至文件,等等。
-
日志记录器和处理器都可以对记录进行过滤。过滤器可以根据过滤器实现器指定的标准丢弃那些无用的记录项。
-
日志记录可以采用不同的方式格式化,例如,纯文件或XML。
-
应用程序可以记录使用多个日志记录器,它们使用与包名类似的层次结构的名字,例如,com.mycompany.myapp。
-
日志系统的配置由配置文件控制。
-
这篇关于读《Java核心技术 卷I》第七章 异常、断言和日志的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南