Java基础第7章异常处理.doc

Java基础第7章异常处理.doc

ID:50826944

大小:60.50 KB

页数:18页

时间:2020-03-15

Java基础第7章异常处理.doc_第1页
Java基础第7章异常处理.doc_第2页
Java基础第7章异常处理.doc_第3页
Java基础第7章异常处理.doc_第4页
Java基础第7章异常处理.doc_第5页
资源描述:

《Java基础第7章异常处理.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、第七章异常处理为了构建健壮、灵活的代码,异常就是程序员必须要面对的问题。异常处理也因此成为了衡量代码优劣的重要尺度。当程序产生异常,能够启用相应的异常处理程序进行异常处理,使得程序能够继续运行下去。本章学习目标:了解异常的基本常识熟悉异常处理的基本原则掌握如何创建和使用自定义异常处理程序7.1异常的基本概念发现错误的最佳时机是在编译阶段,也能使系统的维护代价降到最低。但是,编译期间不可能找出所有的错误,原因就在于:对于JAVA语言来说,编译过程的本身除了把源程序编译成JAVA虚拟机能够执行的.class字解码文件外

2、,仅仅对程序进行语法性验证。剩下的问题就必须在运行期间去解决。这就需要通过某种方式,把错误源的相关信息传递给某个错误处理者。JAVA异常处理机制也因此而诞生了。19781108gxy4205891067.1.1什么是异常在程序运行时,打断正常程序流程的任何不正常的情况称为错误或异常。“异常处理”的实现,最早可以追溯到20世纪60年代的操作系统。经过几十年的积累,才使得“异常处理”被正式的纳入语言的范畴。一个“注重实效的程序员”是不应该回避异常处理的。但是很可惜,或许异常处理真的很困难吧。大家都有意、无意的回避了其中

3、的一些异常。这是很不负责任的做法。7.1.2JAVA标准异常JAVA中的Throwable类是所有异常类的顶级父类,并且有两个直接子类。一个是Error类,另一个是Exception类。这两个子类代表JAVA异常的两种类型。Error用来表示编译时和系统错误,Exception是与编程有关的所有类的父类,是可以被抛出异常的基本类型。而JAVA程序员所关心也就是Exception类型的异常。如果您看过SUN官方的JAVA文档会发现:其实所有的异常类,除了类名不同外,其它的内容都极其的相似。所以要想写出优雅的异常处理程

4、序,关键是要理解JAVA异常概念以及如何在恰当的时间应用它。7.1.3JAVA异常处理机制JAVA程序的执行过程中如果出现异常,就会有几件事随之发生。首先,自动生成一个异常类的对象,该对象包含了有关异常的基本信息,然后当前执行路径被终止,并且从当前环境中弹出异常对象的引用(其实这个异常对象的引用是被自动提交给JAVA运行时系统的),这个过程称为“抛出异常”。当JAVA运行时系统接收到异常对象时,会寻找能处理这一异常的代码,并把当前异常对象交给其处理,这个过程称为“异常捕获”。7.2捕获异常首先让我们先看一个简单的示

5、例。例7.1:publicclassfirstException{publicstaticvoidmain(Stringargs[]){inttemp1=20;inttemp2=0;System.out.println(temp1/temp2);System.out.println("上面因为除数为零,所以应该对异常进行处理,否则本行将不能输出");}}编译:javacfirstException.java运行:javafirstException这时程序就终止了,并抛出一个JAVA运行时捕获的异常,内容如下:Ex

6、ceptioninthread"main"java.lang.ArithmeticException:/byzeroatfirstException.main(firstException.java:7)这段提示的意思是:在main线程中产生了一个java.lang.ArithmeticException异常:原因是除数为0,错误代码在firstException.java这个文件的第7行。(线程的概念将在后面的章节进行讲解。)。下面我们对程序进行一下修改并保存,使之能够正常运行。例7.2:publicclassf

7、irstException{publicstaticvoidmain(Stringargs[]){inttemp1=20;inttemp2=0;try{System.out.println(temp1/temp2);}catch(ArithmeticExceptione){System.err.println("我是一个异常");}System.out.println("上面因为除数为零,所以应该对异常进行处理,否则本行将不能输出");}}编译:javacfirstException.java运行:javafirs

8、tException结果:我是一个异常上面因为除数为零,所以应该对异常进行处理,否则本行将不能输出虽然负数开平方绝对是不可以的,但是JAVA运行时系统却不会捕获该异常,只是把开平方的结果赋予NaN值。这个NaN是“NotaNumber”,即非数值(也有称其为“不确定式”的,但是非数值可能更合适一些)。但是比较有意思的是JAVA本身对NaN本身的定义,如下:p

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

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

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