快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
if(sLine == null) break; wr.write(sLine); wr.write("\r\n"); } } finally { wr.flush(); wr.close(); rd.close(); } } catch(Exception ex) { ex.printStackTrace(); } } }

编译时,输出的错误信息如下:

E:\work\\Trans.java:20: incompatible types found : java.lang.String required: java.lang.Throwable if (rd == null || wr == null) throw new String("error! test!");

1 error

java异常处理笔记(3)

时间:2011-01-25 blogjava 江苏520

当然,实际的 Java 编程中,由于 JDK 平台已经为我们设计好了非常丰富和完整的异常对象分类模型。因此,java 程序员一般是不需要再重新定义自己的异常对象。而且即便是需要扩展自定义的异常对象,也往往会从 Exception 派生而来。所以,对于 java 程序员而言,它一般只需要在它的顶级函数中 catch(Exception ex) 就可以捕获出所有的异常对象,而不必像 C++ 中采用 catch(…) 那样不伦不类,但又无可奈何的语法。因此,在 java 中也就不需要(也没有了) catch(…) 这样的语法。

至于 JDK 平台中的具体的异常对象分类模型,主人公阿愚打算放在另外单独的一篇文章中详细讨论,这里只简单的概括一下: 所有异常对象的根基类是 Throwable ,Throwable 从 Object 直接继承而来(这是 java 系统所强制要求的),并且它实现了 Serializable 接口(这为所有的异常对象都能够轻松跨越 Java 组件系统做好了最充分的物质准备)。从 Throwable 直接派生出的异常类有 Exception 和 Error 。 Exception 是 java 程序员所最熟悉的,它一般代表了真正实际意义上的异常对象的根基类。也即是说,Exception 和从它派生而来的所有异常都是应用程序能够 catch 到的,并且可以进行异常错误恢复处理的异常类型。而 Error 则表示 Java 系统中出现了一个非常严重的异常错误,并且这个错误可能是应用程序所不能恢复的,例如 LinkageError ,或 ThreadDeath 等。

对异常处理的管理更严格,也更严谨!

同样还是与 C++ 异常处理模型作比较,在 Java 系统中,它对异常处理的管理更严格,也更严谨!为什么这么说呢?下面请听阿愚娓娓道来!

首先还是看一个例子吧!代码如下:

import java.io.*; public class Trans { public static void main(String[] args) { try { BufferedReader rd=null; Writer wr=null; try { File srcFile = new File((args[0])); File dstFile = new File((args[1])); rd = new BufferedReader(new InputStreamReader(new FileInputStream(srcFile), args[2])); wr = new OutputStreamWriter(new FileOutputStream(dstFile), args[3]); // 注意下面这条语句,它有什么问题吗? if (rd == null || wr == null) throw new Exception("error! test!"); while(true) { String sLine = rd.readLine(); if(sLine == null) break; wr.write(sLine); wr.write("\r\n"); } } finally { wr.flush(); wr.close(); rd.close(); } } catch(IOException ex) { ex.printStackTrace(); } } }

熟悉 java 语言的程序员朋友们,你们认为上面的程序有什么问题吗?编译能通过吗?如果不能,那么原因又是为何呢?好了,有了自己的分析和预期之后,不妨亲自动手编译一下上面的小程序,呵呵!结果确实如您所料?是的,的确是编译时报错了,错误信息如下:

E:\Trans.java:20: unreported exception java.lang.Exception; must be caught or declared to be thrown if (rd == null || wr == null) throw new Exception("error! test!");

1 error

java异常处理笔记(4)

时间:2011-01-25 blogjava 江苏520

上面这种编译

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号