欢迎来到天天文库
浏览记录
ID:58882949
大小:437.50 KB
页数:50页
时间:2020-09-30
《Java课件 第13章 异常处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第13章异常处理1动因当一个程序运行时出现一个运行时错误时,这个程序就会异常终止。该如何处理这个运行时错误,以使程序可以继续运行或者平稳终止呢?这就是本章要介绍的主题。2学习目标了解异常和异常处理的概貌(第13.2节)。探究使用异常处理的优点(第13.3节)。区别异常的类型:Error(致命的)和Exception(非致命的),以及必检和免检异常(第13.4节)。在方法头中声明异常(第13.5.1节)。在方法中抛出异常(第13.5.2节)。编写try-catch块处理异常(第13.5.3节)。解释异常是如何传播的(第13.5.3节
2、)。在try-catch块中使用finally子句(第13.6节)。只为非预期错误使用异常(第13.7节)。在catch块中重新抛出异常(第13.8节)。创建链式异常(第13.9节)。定义自定制的异常类(第13.10节)。3异常处理概述QuotientRunQuotientWithIfRunQuotientWithExceptionRun显示运行时错误使用一条if语句来处理它如果在方法被调用时发生运行错误该怎么办?4异常处理的优势QuotientWithMethodRun现在,你看到了使用异常处理的优点。它能使方法抛出一个异常给它
3、的调用者。这个调用者可以处理该异常。如果没有这个能力,那么被调用的方法就必须自己处理异常或终止该程序。5处理InputMismatchException异常InputMismatchExceptionDemoRun通过处理异常InputMismatchException,程序将可以继续读取输入直到它是正确的为止。6异常类型7系统错误系统错误(Systemerrors)是由Java虚拟机抛出的,它用Error类表示。Error类描述的是内部系统错误。这样的错误很少发生。如果发生,除了通知用户以及尽量稳妥地终止程序外,几乎什么也不能做
4、。8异常异常(Exception)描述的是由程序和外部环境所引起的错误,这些错误能被程序捕获和处理。9运行时异常运行时异常(RuntimeException)是程序设计错误所引起的,例如,错误的类型转换、访问越界数组或数值错误。10必检异常和免检异常RuntimeException、Error以及它们的子类都被称为免检异常(uncheckedexceptions)。所有其它异常都被称为必检异常(checkedexceptions),意思是编译器会强制程序员检查并处理它们。11免检异常在大多数情况下,免检异常都会反映出程序设计中不可
5、恢复的逻辑错误。例如:如果通过一个引用变量访问一个对象之前并未将一个对象赋值给它,就会抛出一个NullPointerException异常;如果访问一个数组的界限外的元素,就会抛出IndexOutOfBoundsException异常。这些都是程序中必须纠正的逻辑错误。免检异常可能在程序的任何一个地方出现。为避免过多地使用try-catch块,Java语言不允许编写代码捕获或声明免检异常。12免检异常免检异常。13声明、抛出和捕获异常14声明异常每个方法都必须声明它可能抛出的必检异常的类型。这被称为声明异常(declaringex
6、ceptions)。publicvoidmyMethod()throwsIOExceptionpublicvoidmyMethod()throwsIOException,OtherException15抛出异常当程序检测一个错误时,程序可以创建一个恰当的异常类型的实例并抛出它。这就被称为抛出一个异常(throwinganexception)。这里有一个例子:thrownewTheException();TheExceptionex=newTheException();throwex;16抛出异常举例/**Setanewradiu
7、s*/publicvoidsetRadius(doublenewRadius)throwsIllegalArgumentException{if(newRadius>=0)radius=newRadius;elsethrownewIllegalArgumentException("Radiuscannotbenegative");}17捕获异常try{statements;//Statementsthatmaythrowexceptions}catch(Exception1exVar1){handlerforexception1;
8、}catch(Exception2exVar2){handlerforexception2;}...catch(ExceptionNexVar3){handlerforexceptionN;}18捕获异常19捕获或声明必检异常Java强迫程序员处理
此文档下载收益归作者所有