快速业务通道

java异常处理笔记 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
DK 的规范之中。请看如下代码,来验证一下我们的理解!

import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { int i = 4; int j = 0; // 运行时,这里将触发了一个 ArithmeticException // ArithmeticException 从 RuntimeException 派生而来 System.out.println("i / j = " + i / j); } } 运行结果如下: java.lang.ArithmeticException: / by zero at Trans.test(Trans.java:16) at Trans.main(Trans.java:8) Exception in thread "main" 又如下面的例子,也会产生一个 RuntimeException ,代码如下: import java.io.*; public class Trans { public static void main(String[] args) { test(); } static void test() { String str = null; // 运行时,这里将触发了一个 NullPointerException // NullPointerException 从 RuntimeException 派生而来 str.compareTo("abc"); } }

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) 来捕获它们。如下面的示例程序,代码如下:

import java.io.*; public class Trans { public static void main(String[] args) { try { test(); } // 在上层的调用函数中,最好捕获所有的 Exception 异常! catch(Exception e) { System.out.println("go here!"); e.printStackTrace(); } } // 这里最好显式地声明一下,表明该函数可能抛出 RuntimeException static void test() throws RuntimeException { String str = null; // 运行时,这里将触发了一个 NullPointerException // NullPointerException 从 RuntimeException 派生而来 str.compareTo("abc"); } }

总结

•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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号