您的位置:首页 > 编程语言 > Java开发

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

2013-10-14 22:45 344 查看
《Java语言程序设计(基础篇)》读书笔记(四)

作者:wangzz

原文地址:http://blog.csdn.net/wzzvictory/article/details/12717381

转载请注明出处

如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号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、何时使用异常
由于异常处理是需要耗费系统资源的,不应该将其简单的用于逻辑测试,使用需谨慎。

未完待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息