欢迎来到天天文库
浏览记录
ID:24953769
大小:433.50 KB
页数:37页
时间:2018-11-16
《第9章 java高级编程98672》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、学习导读本章将介绍Java语言中的一些高级特性:异常处理、多线程机制、流式IO以及网络通信,其中每个部分都能扩展成一个专题。读者在本章学习到的只是其中很小的一部分,但是能够从中了解一些基本概念和基本操作,为今后的深入学习打下基础。异常处理提供对错误的捕捉和处理机制;多线程机制使得程序的多个子任务能够“同时”执行;流式IO提供了对输入输出的读写机制;网络通信特性允许Java程序通过Socket实现底层通信,并利用Java提供的扩展组件实现高层服务。第九章Java高级编程教学重点与难点:异常处理、多线程机制、流式IO
2、以及网络通信的基本概念和模型异常的捕获和处理多线程的实现及Runnable接口的应用流式输入输出的操作、文件读写及随机访问基于Socket的面向连接的网络底层通信及高层服务9.1异常处理在Java中,提供了错误捕捉和处理机制,即异常处理机制。在程序运行过程中发生错误时,Java允许其不按照正常路径完成任务,由发现错误的方法抛出封装了错误信息的对象(异常)到其调用程序,发出已经发生问题的信号,然后立即退出;而且,程序并不在调用该方法的代码处继续执行,而是由异常处理机制开始搜索一个能够处理这种特定错误情况的异常处理器
3、。9.1.1异常分类Throwable类派生出两个分支:Error和Exception。Error类被认为是不能恢复的严重错误,如系统内部错误和资源耗尽错误等。不应该抛出这种类型的错误,而是让程序中断。Exception类定义可能遇到的轻微错误,分为派生自RuntimeException类的异常和非派生自RuntimeException类的异常。这时,可以写代码来处理异常并继续程序执行,而不是让程序中断。区分RuntimeException和非RuntimeException的规则是:编程错误导致RuntimeE
4、xception,如被零除、数组越界访问、空指针访问等;而其他异常则是由于意外情况而发生的,如试图读取文件结尾以后的数据、试图打开错误的URL、试图根据并不代表已存在类的字符串来查找Class对象等。9.1.2方法如何抛出异常//本方法从长度为2048字节的某文件中读入数据到字符串对象中。StringreadFile(BufferedReaderin)throwsEOFException{...while(...){//ch为当前读入的字符。if(ch==-1)//文件尾;{//当n5、读入字符串,就遇到文件结束标志,视为异常情况。if(n6、的异常类型2{对此异常的处理//异常处理2}catch(ExceptionType3e3)//要捕获的异常类型3{对此异常的处理//异常处理3}【例9.1】捕获并处理异常程序代码见ExceptionExample.java。运行结果如下:CaughttheException!!!e.getMessage():IthrowanException!!!【例9.2】重新抛出异常程序代码见RethrowException.java。运行结果如下:theoriginalexceptioninf()CaughtinmainE7、xceptioninthread"main"java.lang.Exception:thrownfromf()atRethrowException.f(RethrowException.java:8)atRethrowException.main(RethrowException.java:14)9.1.4创建自己的异常类我们可以创建自己的异常类,以便对特殊的异常进行处理。创建的方法很简单:继承现有的异常类。【例9.3】创建自己的异常类。程序代码见ExceptionInherit.java。运行结果如下:Thro8、wingMyExceptionMyException:thesecondconstructor!atExceptionInherit.f(ExceptionInherit.java:19)atExceptionInherit.main(ExceptionInherit.java:25)【例9.4】创建具有更多功能的异常类。程序代码见ExceptionInherit2.ja
5、读入字符串,就遇到文件结束标志,视为异常情况。if(n6、的异常类型2{对此异常的处理//异常处理2}catch(ExceptionType3e3)//要捕获的异常类型3{对此异常的处理//异常处理3}【例9.1】捕获并处理异常程序代码见ExceptionExample.java。运行结果如下:CaughttheException!!!e.getMessage():IthrowanException!!!【例9.2】重新抛出异常程序代码见RethrowException.java。运行结果如下:theoriginalexceptioninf()CaughtinmainE7、xceptioninthread"main"java.lang.Exception:thrownfromf()atRethrowException.f(RethrowException.java:8)atRethrowException.main(RethrowException.java:14)9.1.4创建自己的异常类我们可以创建自己的异常类,以便对特殊的异常进行处理。创建的方法很简单:继承现有的异常类。【例9.3】创建自己的异常类。程序代码见ExceptionInherit.java。运行结果如下:Thro8、wingMyExceptionMyException:thesecondconstructor!atExceptionInherit.f(ExceptionInherit.java:19)atExceptionInherit.main(ExceptionInherit.java:25)【例9.4】创建具有更多功能的异常类。程序代码见ExceptionInherit2.ja
6、的异常类型2{对此异常的处理//异常处理2}catch(ExceptionType3e3)//要捕获的异常类型3{对此异常的处理//异常处理3}【例9.1】捕获并处理异常程序代码见ExceptionExample.java。运行结果如下:CaughttheException!!!e.getMessage():IthrowanException!!!【例9.2】重新抛出异常程序代码见RethrowException.java。运行结果如下:theoriginalexceptioninf()CaughtinmainE
7、xceptioninthread"main"java.lang.Exception:thrownfromf()atRethrowException.f(RethrowException.java:8)atRethrowException.main(RethrowException.java:14)9.1.4创建自己的异常类我们可以创建自己的异常类,以便对特殊的异常进行处理。创建的方法很简单:继承现有的异常类。【例9.3】创建自己的异常类。程序代码见ExceptionInherit.java。运行结果如下:Thro
8、wingMyExceptionMyException:thesecondconstructor!atExceptionInherit.f(ExceptionInherit.java:19)atExceptionInherit.main(ExceptionInherit.java:25)【例9.4】创建具有更多功能的异常类。程序代码见ExceptionInherit2.ja
此文档下载收益归作者所有