java异常处理笔记 - 编程入门网
DK 的规范之中。请看如下代码,来验证一下我们的理解!
java异常处理笔记(7)时间:2011-01-25 blogjava 江苏520所以,针对 RuntimeException 类型的异常,javac 是无法通过编译时的静态语法检测来判断到底哪些函数(或哪些区域的代码)可能抛出这类异常(这完全取决于运行时状态,或者说运行态所决定的),也正因为如此,Java 异常处理模型中的“ must be caught or declared to be thrown ”规则也不适用于 RuntimeException (所以才有前面所提到过的奇怪编译现象,这也属于特殊规则吧)。但是,Java 虚拟机却需要有效地捕获并处理此类异常。当然,RuntimeException 也可以被程序员显式地抛出,而且为了程序的可靠性,对一些可能出现“运行时异常( RuntimeException )”的代码区域,程序员最好能够及时地处理这些意外的异常,也即通过 catch(RuntimeExcetion) 或 catch(Exception) 来捕获它们。如下面的示例程序,代码如下:
总结 •Java 异常处理模型与 C++ 中异常处理模型的最大不同之处,就是在 Java 异常处理模型中引入了 try-finally 语法,它主要用于清理非内存性质的一些资源(垃圾回收机制无法处理的资源),例如,数据库连接、 Socket 关闭、文件流的关闭等。 •所有的异常都必须从 Throwable 继承而来,不像 C++ 中那样,可以抛出任何类型的异常。因此,在 Java 的异常编程处理中,没有 C++ 中的 catch(…) 语法,而它的 catch(Throwable e) 完全可以替代 C++ 中的 catch(…) 的功能。 •在 Java 的异常处理模型中,要求所有被抛出的异常都必须要有对应的“异常处理模块”。也即是说,如果你在程序中 throw 出一个异常,那么在你的程序中(函数中)就必须要 catch 这个异常(处理这个异常)。但是,对于 RuntimeException 和 Error 这两种类型的异常(以及它们的子类异常),却是例外的。其中,Error 表示 Java 系统中出现了一个非常严重的异常错误;而 RuntimeException 虽然是 Exception 的子类,但是它却代表了运行时异常(这是 C++ 异常处理模型中最不足的,虽然 VC 实现 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |