JAVA教程程序异常处理.pptx
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA教程程序异常处理.pptx》由会员分享,可在线阅读,更多相关《JAVA教程程序异常处理.pptx(24页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、会计学1JAVA教程程序异常教程程序异常(ychng)处理处理第一页,共24页。引子引子(yn zi)在调试航班信息录入程序时,可能会遇到这样的情况:应用程序运行过程中,突然中止,屏幕上出现一大堆英文在调试航班信息录入程序时,可能会遇到这样的情况:应用程序运行过程中,突然中止,屏幕上出现一大堆英文.让人不知所措。让人不知所措。在许多城市,银行在许多城市,银行ATMATM机随处可见,取款非常方便。在机随处可见,取款非常方便。在ATMATM机上取款必须按照一定的步骤操作,若操作出错,会相应的提示信息,指导你下一步地机上取款必须按照一定的步骤操作,若操作出错,会相应的提示信息,指导你下一步地操作。比
2、如密码输入错误,操作。比如密码输入错误,ATMATM机将会显示机将会显示(xi(xi nsh)“nsh)“密码输入错误,请重新输入密码输入错误,请重新输入”的消息,如果三次密码输入都有误,则吞卡没商量。的消息,如果三次密码输入都有误,则吞卡没商量。无论什么原因引起的程序运行不正常,都认为是程序出现了异常。无论什么原因引起的程序运行不正常,都认为是程序出现了异常。第1页/共24页第二页,共24页。知识知识(zh shi)要点要点n n异常的概念异常的概念n n常见常见(chn jin)(chn jin)的异常情况的异常情况n n异常处理的机制异常处理的机制n n利用利用try-catch-fin
3、allytry-catch-finally实现异常处理实现异常处理n n利用利用throwthrow、throwsthrows创建用户自定义异常创建用户自定义异常第2页/共24页第三页,共24页。知识学习知识学习知识学习知识学习异常异常异常异常(ychng)(ychng)概念概念概念概念n n异常异常JavaJava把程序运行把程序运行(ynxng)(ynxng)中可能遇到的错误分为两类,一类是非致命的,通过某种修正后中可能遇到的错误分为两类,一类是非致命的,通过某种修正后程序还能继续执行。这类错误称为异常,这是一类特殊的运行程序还能继续执行。这类错误称为异常,这是一类特殊的运行(ynxng)
4、(ynxng)错误对象。错误对象。n n 另一类是致命的,即程序遇到了非常严重的不正常状态,不能简单地恢复执行,这就是错误。即另一类是致命的,即程序遇到了非常严重的不正常状态,不能简单地恢复执行,这就是错误。即n n 异常类基类异常类基类throwablethrowable派生出两个子类:派生出两个子类:n n Error Error类:定义了类:定义了JavaJava程序运行程序运行(ynxng)(ynxng)时出现了灾难性失败的异常,一般来说时出现了灾难性失败的异常,一般来说javajava程序不捕获也程序不捕获也不抛出类不抛出类ErrorError的对象(包括动态链接失败、虚拟机错误等)
5、,而只处理的对象(包括动态链接失败、虚拟机错误等),而只处理ExceptionException类的各子类对象。类的各子类对象。n n Exception Exception类:定义了程序可以捕捉到的异常。类:定义了程序可以捕捉到的异常。n n 异常分两类:异常分两类:1)1)系统定义的系统定义的n n 2)2)用户定义的用户定义的n n 第3页/共24页第四页,共24页。n n异常异常(ychng)(ychng)处理处理对于异常对于异常(ychng)(ychng),JavaJava使用一种错误捕获方法进行处理,称为异常使用一种错误捕获方法进行处理,称为异常(ychng)(ychng)处理。处
6、理。n n处理异常处理异常(ychng)(ychng)的两种方式的两种方式n n 一是将异常一是将异常(ychng)(ychng)交由交由JavaJava异常异常(ychng)(ychng)处处理机制的预设处理方法来处理。理机制的预设处理方法来处理。n n 二是利用二是利用JavaJava提供的提供的try-catch-finallytry-catch-finally语句对于可能语句对于可能出现的异常出现的异常(ychng)(ychng)作预先处理。作预先处理。知识知识(zh shi)学习学习异异常概念常概念第4页/共24页第五页,共24页。n nExceptionException类类定定义
7、义了了程程序序可可捕捕捉捉的的异异常常。ExceptionException类类派派生生了了两两个个子子类类:RuntimeExceptionRuntimeException和和IOExceptionIOException。RuntimeExceptionRuntimeException类类的的异异常常一一般般是是编编程程原因,如:原因,如:n n 1)1)一个错误的类型转换(一个错误的类型转换(NumberFormatExceptionNumberFormatException)n n 2)2)一个数组越界访问(一个数组越界访问(ArrayIndexOutOfBoundsExceptionA
8、rrayIndexOutOfBoundsException)n n 3)3)一个空指针访问(一个空指针访问(NullPointerExceptionNullPointerException)n n 4)4)一个除以零的算术操作(一个除以零的算术操作(ArithmeticExceptionArithmeticException)n n IOException IOException类的异常原因主要一些意外情况类的异常原因主要一些意外情况(qngkung)(qngkung)的出现,如:的出现,如:n n 1)1)试图读文件结尾后的数据(试图读文件结尾后的数据(EOFExceptionEOFExce
9、ption)n n 2)2)试图打开一个错误的试图打开一个错误的URLURL(UnknownHostExceptionUnknownHostException)n n 3)3)试试图图根根据据一一个个根根本本不不存存在在的的类类的的字字符符串串来来找找一一个个ClassClass对对象象(ClassNotFoundExceptionClassNotFoundException)知识学习知识学习程序运行的程序运行的错误错误(cuw)类型及位置类型及位置第5页/共24页第六页,共24页。知识知识(zh shi)学习学习程序运行程序运行的错误类型及位置的错误类型及位置ArithmeticExcept
10、ion算术异常 整数除法中,如果除数为0,则发生该类异常。Java虚拟机遇到这样的错误时会中止程序的执行流程,并新建一个(y)ArithmeticException类的对象,即抛出一个(y)算术运算异常。例如下面的程序将引发ArithmeticException异常:public class Test ArithmeticException public static void main(String args)int denominator=0,numerator=20,result=0;result=numerator/denominator;/除数为0,将引发ArithmeticExce
11、ption异常 System.out.println(result);第6页/共24页第七页,共24页。NullPointerExceptionNullPointerException异异常常发发生生的的原原因因,通通常常是是由由于于应应用用程程序序企企图图在在某某个个(mu)(mu)需要的对象上使用需要的对象上使用nullnull值。值。1)1)使用未分配内存的对象使用未分配内存的对象 2)2)调用未分配内存对象的方法调用未分配内存对象的方法 3)3)访问或修改未分配内存对象的属性访问或修改未分配内存对象的属性 4)4)使用长度为使用长度为nullnull的数组的数组 如:如:image i
12、m=new image4;image im=new image4;System.out.println(im0.toString();System.out.println(im0.toString();第第一一行行创创建建了了4 4个个元元素素的的数数组组imim,每每个个元元素素都都是是imageimage类类型型的的,系系统统为为其其进进行行初初始始化化,每每个个元元素素中中的的值值为为nullnull,表表明明它它还还没没有有指指向向任任何何实实例例。第第二二行行要要访访问问im0im0,由由于于访访问问的的是是还还没没有有进进行行实实例例化化的的空空引引用用,因因此此导导致致NullP
13、ointerExceptionNullPointerException异常。异常。知识学习知识学习程序运行的程序运行的错误错误(cuw)类型及位置类型及位置第7页/共24页第八页,共24页。NegativeArraySizeExceptionNegativeArraySizeException数组元素数组元素数组元素数组元素(yun s)(yun s)个数为负异个数为负异个数为负异个数为负异常常常常 按常规,数组元素的个数应是一个(y)大于等于0的整数,不应该是一个(y)负数。创建数组时,如果元素个数是个负数,则会引发NegativeArraySizeException异常。ArrayInde
14、xOutOfBoundsException数组下标越界异常 java把数组看作是对象,并用length变量记录数组的大小。访问数组元素时,运行时环境根据length值自动检查下标的大小。如果数组下标越界,则将导致 ArrayIndexOutOfBoundsException异常。第8页/共24页第九页,共24页。异常处理关键字异常处理关键字 try try、catchcatch和和finallyfinally 当当发发生生异异常常时时,要要进进行行异异常常处处理理。JavaJava语语言言提提供供了了异异常常处处理理机机制制,用用于于专专门门处处理理异异常常。一一般般地地,当当发发生生异异常常
15、时时,程程序序中中断断执执行行,并并输输出出一一条条信信息息(xnx)(xnx)。JavaJava中中对对于于可可能能抛抛出出异异常常的的代代码码段段,要要使使用用trytry语语句句括括住住,用用catchcatch语语句句指指明明要要捕捕获获的的异异常常及及相相应应的的处处理理代代码。码。trytry、catchcatch和和finallyfinally语法:语法:TryTry /此处为抛出具体异常的代码此处为抛出具体异常的代码catch()catch()/抛出异常时要执行的代码抛出异常时要执行的代码finallyfinally /必须执行的代码必须执行的代码 知识学习知识学习捕获捕获(b
16、hu)和处理异常的机和处理异常的机制制第9页/共24页第十页,共24页。异常异常(ychng)处处理过程理过程第10页/共24页第十一页,共24页。例子例子例子例子(本例没有本例没有本例没有本例没有(mi y(mi y u)u)捕获异常捕获异常捕获异常捕获异常,程序将在发生异常处终止,并由缺省处程序将在发生异常处终止,并由缺省处程序将在发生异常处终止,并由缺省处程序将在发生异常处终止,并由缺省处理程序输出错误信息)理程序输出错误信息)理程序输出错误信息)理程序输出错误信息)n n1.package ex;1.package ex;n n public class Frame1 public c
17、lass Frame1 n n public Frame1()public Frame1()n n int d=0;int d=0;n n int a=10/d;/int a=10/d;/被被0 0除,产生除,产生(ch(ch nshng)nshng)异常异常n n System.out.println(never run this sentence);System.out.println(never run this sentence);n n /此语句将不被执行此语句将不被执行n n n n public static void main(Stringargs)public static
18、void main(Stringargs)n n Frame1 frame1=new Frame1();Frame1 frame1=new Frame1();n n n n 第11页/共24页第十二页,共24页。例子例子例子例子(本例捕获了异常本例捕获了异常本例捕获了异常本例捕获了异常,同时同时同时同时(tngsh)(tngsh)很好地说明了很好地说明了很好地说明了很好地说明了trytry、catchcatch、finallyfinally、各块之间的处理关系)、各块之间的处理关系)、各块之间的处理关系)、各块之间的处理关系)2 2.package ex;.package ex;public
19、class Exception2 public class Exception2 int count=1;int count=1;public Exception2()public Exception2()while(true)while(true)try try int int x x=6/(count-);=6/(count-);System.out.println(in try,no exception);System.out.println(in try,no exception);catch(ArithmeticException e)catch(ArithmeticExceptio
20、n e)System.out.println(in catch,divided by zero);System.out.println(in catch,divided by zero);finally finally System.out.println(in finally);System.out.println(in finally);if(count=-1)break;if(count=-1)break;/while /while System.out.println(end of program);System.out.println(end of program);public s
21、tatic void main(Stringargs)public static void main(Stringargs)Exception2 Exception2 exception2exception2=new Exception2();=new Exception2();第12页/共24页第十三页,共24页。执行(zhxng)main方法生成(shn chn)exception对象,调用构造方法执行(zhxng)构造方法中while的循环执行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行x=6/0及count=count-1=
22、-1,此时引发异常ArithmeticException,中断当前代码的执行,查找匹配的catch,输出in catch,divided by zero执行finally块,输出in finally,count不为-1,继续执行循环执行finally块,输出in finally,count为-1,终止while循环输出end of program执行main方法生成exception对象,调用构造方法执行main方法生成exception对象,调用构造方法执行main方法生成exception对象,调用构造方法执行main方法执行构造方法中while的循环生成exception对象,调用构造方
23、法执行main方法执行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行构造方法中while的循环生成exception对象,调用构造方法执行main方法执行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行构造方法中while的循环生成exception对象,调用构造方法执行main方法执行x=6/0及count=count-1=-1,此时引发异常ArithmeticException,中断当前代码的执行,查找匹配的catch,输出in catch,divided by zero执
24、行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行构造方法中while的循环生成exception对象,调用构造方法执行main方法执行x=6/0及count=count-1=-1,此时引发异常ArithmeticException,中断当前代码的执行,查找匹配的catch,输出in catch,divided by zero执行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行构造方法中while的循环生成exception对象,调用构造方法执行main方法执行x=6/0及cou
25、nt=count-1=-1,此时引发异常ArithmeticException,中断当前代码的执行,查找匹配的catch,输出in catch,divided by zero执行x=6/1及count=count-1=0,此时不引发异常输出int tiy,no exception执行构造方法中while的循环生成exception对象,调用构造方法执行main方法执行finally块,输出in finally,count不为-1,继续执行循环执行x=6/0及count=count-1=-1,此时引发异常ArithmeticException,中断当前代码的执行,查找匹配的catch,输出in
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 教程 程序 异常 处理
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内