《Java语言程序设计(基础篇)》读书笔记(四)

《Java语言程序设计(基础篇)》读书笔记(四)
作者:wangzz
转载请注明出处
如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢!

第十三章 异常处理
这是我所了解的语言都有的一个机制,重要程度不言而喻。
1、Java中异常类型
Java API中有很多预定义的异常类,如下图所示:

从图中可以看出,Throwable类是所有异常类的跟类。图中所示的异常类可以分为三种主要类型:
①系统错误(system error)
是由Java虚拟机抛出的,用图中的Error类表示。Error类描述的是内部系统错误,一旦发生,除了尽量稳妥地终止程序外,啥都干不了。
②异常(exception)
用图中的Exception类表示,它描述的是由程序内部和外部环境所引起的错误,这些错误能被捕获和处理。
③运行时异常(runtime exception)
用RuntimeException类表示,是Exception的子类。描述的是程序设计错误,通常都是有Java虚拟机抛出的,

2、免检异常和必捡异常
①免检异常
RuntimeException、Error以及它们的子类都称为免检异常,编译器不检查处理它们,程序员也可以不处理它们,当出现这样的异常时,总是由虚拟机接管。出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码,如果该异常没有被处理,程序将会终止。
②必检异常
除了免检异常以外的都是必检异常,编译器会强制程序员检查并处理它们

3、声明和抛出异常
①声明异常
每个方法都必须显式声明它可能抛出的必检异常的类型,因为任何代码都可能发生系统错误和运行时错误,所以Java不要求显式声明Error和RuntimeException类型的免检异常。
在方法中声明异常,就要在方法头中使用关键字throws。
需要注意的是,如果方法在父类中没有声明异常,那么就不能在子类中对其进行覆盖来声明异常
②抛出异常
当程序中发生错误时,可以建立一个异常并通过throw关键字将其抛出。

声明并抛出一个异常的方式如下所示:
public void myMethod() throws IOException { //声明异常
  if(an error occurs) {
    throw new Exception();//抛出异常
  }
}
提示:声明异常的关键字是throws,抛出异常的关键字是throw

4、处理异常
语法如下:
try {
  statements;
}
catch (TheException ex) {
  handling ex;
}
finally {
  finalStatements;
}
各种语言处理异常的方式都大同小异。有下面几点需要说明:
①finally中的语句无论有没有异常发生都会执行,而且哪怕finally块前面有个return语句,还是会执行,足够牛叉吧;
②catch中的语句只有在try中语句出现异常才会执行;
③try中是可能出现异常的功能代码。

5、何时使用异常
由于异常处理是需要耗费系统资源的,不应该将其简单的用于逻辑测试,使用需谨慎。

未完待续。。。

阅读更多
个人分类: Java
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭