java语言中异常错误恢复处理的异常类型

java语言中异常错误恢复处理的异常类型

ID:6075490

大小:48.50 KB

页数:7页

时间:2018-01-02

java语言中异常错误恢复处理的异常类型_第1页
java语言中异常错误恢复处理的异常类型_第2页
java语言中异常错误恢复处理的异常类型_第3页
java语言中异常错误恢复处理的异常类型_第4页
java语言中异常错误恢复处理的异常类型_第5页
资源描述:

《java语言中异常错误恢复处理的异常类型》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、java语言中异常错误恢复处理的异常类型  Java语言要求java程序中(无论是谁写的代码)所有抛出(throw)的异常都必须是从Throwable派生而来。当然,实际的Java编程中,由于JDK平台已经为我们设计好了非常丰富和完整的异常对象分类模型。因此,java程序员一般是不需要再重新定义自己的异常对象。而且即便是需要扩展自定义的异常对象,也往往会从Exception派生而来。所以,对于java程序员而言,它一般只需要在它的顶级函数中catch(Exceptionex)就可以捕获出所有的异

2、常对象。所有异常对象的根基类是Throwable,Throwable从Object直接继承而来(这是java系统所强制要求的),并且它实现了Serializable接口(这为所有的异常对象都能够轻松跨越Java组件系统做好了最充分的物质准备)。从Throwable直接派生出的异常类有Exception和Error。Exception是java程序员所最熟悉的,它一般代表了真正实际意义上的异常对象的根基类。也即是说,Exception和从它派生而来的所有异常都是应用程序能够catch到的,并且可以

3、进行异常错误恢复处理的异常类型。而Error则表示Java系统中出现了一个非常严重的异常错误,并且这个错误可能是应用程序所不能恢复的,例如LinkageError,或ThreadDeath等。  首先还是看一个例子吧!代码如下:  importjava.io.*;  publicclassTrans  {  publicstaticvoidmain(String[]args)  {  try  {  BufferedReaderrd=null;  Writerwr=null;  try  {  

4、FilesrcFile=newFile((args[0]));  FiledstFile=newFile((args[1]));  rd=newBufferedReader(newInputStreamReader(newFileInputStream(srcFile),args[2]));  wr=newOutputStreamWriter(newFileOutputStream(dstFile),args[3]);  //注意下面这条语句,它有什么问题吗?  if(rd==null

5、

6、wr=

7、=null)thrownewException("error!test!");  while(true)  {  StringsLine=rd.readLine();  if(sLine==null)break;  wr.write(sLine);  wr.write("r");  }  }  finally  {  wr.flush();  wr.close();  rd.close();  }  }  catch(IOExceptionex)  {  ex.printStackTrac

8、e();  }  }  }  熟悉java语言的程序员朋友们,你们认为上面的程序有什么问题吗?编译能通过吗?如果不能,那么原因又是为何呢?好了,有了自己的分析和预期之后,不妨亲自动手编译一下上面的小程序,呵呵!结果确实如您所料?是的,的确是编译时报错了,错误信息如下:  E:Trans.java:20:unreportedexceptionjava.lang.Exception;mustbecaughtordeclaredtobethrown  if(rd==null

9、

10、wr==null)th

11、rownewException("error!test!");  1error  上面这种编译错误信息,相信Java程序员肯定见过(可能还是屡见不鲜!)!  相信老练一些的Java程序员一定非常清楚上述编译出错的原因。那就是如错误信息中(“mustbecaught”)描述的那样,在Java的异常处理模型中,要求所有被抛出的异常都必须要有对应的“异常处理模块”。也即是说,如果你在程序中throw出一个异常,那么在你的程序中(函数中)就必须要catch这个异常(处理这个异常)。例如上面的例子中,你在

12、第20行代码处,抛出了一个Exception类型的异常,但是在该函数中,却没有catch并处理掉此异常的地方。因此,这样的程序即便是能够编译通过,那么运行时也是致命的(可能导致程序的崩溃),所以,Java语言干脆在编译时就尽可能地检查(并卡住)这种本不应该出现的错误,这无疑对提高程序的可靠性大有帮助。  但是,在Java语言中,这就是必须的。如果一个函数中,它运行时可能会向上层调用者函数抛出一个异常,那么,它就必须在该函数的声明中显式的注明(采用throws关键字)。还记得刚才那条编译错误信息吗

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。