java异常处理课件复习课程

上传人:M****1 文档编号:571070628 上传时间:2024-08-08 格式:PPT 页数:29 大小:1.26MB
返回 下载 相关 举报
java异常处理课件复习课程_第1页
第1页 / 共29页
java异常处理课件复习课程_第2页
第2页 / 共29页
java异常处理课件复习课程_第3页
第3页 / 共29页
java异常处理课件复习课程_第4页
第4页 / 共29页
java异常处理课件复习课程_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《java异常处理课件复习课程》由会员分享,可在线阅读,更多相关《java异常处理课件复习课程(29页珍藏版)》请在金锄头文库上搜索。

1、java异常处理课件目标v理解异常的概念v运用 try 块、catch 块和 finally 块处理异常v运用多重 catch 块处理异常v运用嵌套 try/catch 块处理异常v运用关键字 throw 和 throws 处理异常v运用JAVA编写和使用自定义异常2ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatException异常类的层次结构vThrowable 具有两个子类,它们是Exception

2、:处理用户程序应当捕获的异常情况Error:Error 类的异常为内部错误,因此在正常情况下不期望用户的程序捕获它们 AWTError6Java异常类 文件结束文件结束EOFException找不到文件找不到文件FileNotFoundExceptionI/O异常的根类异常的根类IOException数字转化格式异常,比如字符串到数字转化格式异常,比如字符串到float型数字的转换无效型数字的转换无效NumberFormatException不能加载所需的类不能加载所需的类ClassNotFoundException方法接收到非法参数方法接收到非法参数IllegalArgumentExcept

3、ion数组大小小于或大于实际的数组大小数组大小小于或大于实际的数组大小ArrayIndexOutOfBoundException尝试访问尝试访问null对象成员对象成员NullPointerException许多许多java.lang异常的基类异常的基类RuntimeException异常层次结构的根类异常层次结构的根类Exception算术错误情形,如以零作除数算术错误情形,如以零作除数ArithmeticException线程中断线程中断InterruptedException说说明明异异常常7什么是异常处理vJava编程语言使用异常处理机制为程序提供了错误处理的能力程序中预先想好了程序中

4、预先想好了对付异常的处理办法对付异常的处理办法异常!异常!程序运行程序运行处理完毕,程序继续运行处理完毕,程序继续运行对异常进行处理对异常进行处理8Java中如何进行异常处理vJava的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws捕获异常捕获异常catchtryfinally执行可能产生执行可能产生异常的代码异常的代码捕获异常捕获异常无论是否发生异常,无论是否发生异常,代码总能执行代码总能执行手动抛出异常手动抛出异常抛出异常抛出异常throw声明异常声明异常声明方法可能要声明方法可能要抛出的各种异常抛出的各种异常throws9异常处理块的一般

5、形式try/要监控错误的代码块要监控错误的代码块catch(Exceptione)/Exceptione的异常处理程序的异常处理程序finally/在在try结束前要执行的代码块结束前要执行的代码块10try/catch块trycatchtry/catch块后的代码段块后的代码段publicvoidmethod()try/代码段代码段(此处不会产生异常此处不会产生异常)catch(异常类型异常类型ex)/对异常进行处理的代码段对异常进行处理的代码段/代码段代码段v使用try/catch块捕获异常,分为三种情况:第一种情况第一种情况11try/catch块7-2v使用示例模拟第一种情况:publ

6、icclassAccpExceptionpublicstaticvoidmain(Stringargs)System.out.print(请输入请输入1至至3之间的数字之间的数字:);Scannerin=newScanner(System.in);tryintcourseCode=in.nextInt();switch(courseCode)case1:System.out.println(C#编程编程);break;case2:System.out.println(Java编程编程);break;case3:System.out.println(SQL基础基础);catch(Exceptio

7、nex)System.out.println(输入不为数字输入不为数字!);System.out.println(欢迎提出建议欢迎提出建议!);输入:输入:2Java编程编程欢迎提出建议欢迎提出建议!控制台输出控制台输出12try/catch块trycatch异常类型匹配异常类型匹配try/catch块后的代码段块后的代码段进入进入catch块块publicvoidmethod()try/代码段代码段1/产生异常的代码段产生异常的代码段2/代码段代码段3catch(异常类型异常类型ex)/对异常进行处理的代码段对异常进行处理的代码段4/代码段代码段5v使用try/catch块捕获异常,分为三种

8、情况:第二种情况第二种情况产生异常对象产生异常对象程序继续执行程序继续执行异常是一种特殊的对象,异常是一种特殊的对象,类型为类型为java.lang.Exception或其子类或其子类 发生异常发生异常13try/catch块7-4v使用示例模拟第二种情况:publicclassAccpExceptionpublicstaticvoidmain(Stringargs)System.out.print(请输入请输入1至至3之间的数字之间的数字:);Scannerin=newScanner(System.in);tryintcourseCode=in.nextInt();switch(course

9、Code)case1:System.out.println(C#编程编程);break;case2:System.out.println(Java编程编程);break;case3:System.out.println(SQL基础基础);catch(Exceptionex)System.out.println(输入不为数字输入不为数字!);ex.printStackTrace();System.out.println(欢迎提出建议欢迎提出建议!);输入:输入:abc输入不为数字输入不为数字!异常堆栈信息异常堆栈信息欢迎提出建议欢迎提出建议!控制台输出控制台输出14vprintStackTrac

10、e的堆栈跟踪功能显示出程序运行到当前类的执行流程 publicclassAccpExceptionpublicstaticvoidmain(Stringargs)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scannerin=newScanner(System.in);tryintcourseCode=in.nextInt();/此处代码省略此处代码省略catch(Exceptionex)System.out.println(输入不为数字!输入不为数字!);ex.printStackTrace();System.out.println(欢

11、迎提出建议欢迎提出建议!);try/catch块java.util.InputMismatchExceptionatjava.util.Scanner.throwFor(UnknownSource)atjava.util.Scanner.next(UnknownSource)atjava.util.Scanner.nextInt(UnknownSource)atjava.util.Scanner.nextInt(UnknownSource)atHelloAccp.main(HelloAccp.java:8)异常类型异常类型异常堆栈信息异常堆栈信息在此方法中抛出了异常在此方法中抛出了异常15tr

12、y/catch块trycatch异常类型不匹配异常类型不匹配try/catch块后的代码段块后的代码段程序中断运行程序中断运行 发生异常发生异常publicvoidmethod()try/代码段代码段1/产生异常的代码段产生异常的代码段2/代码段代码段3catch(异常类型异常类型ex)/对异常进行处理的代码段对异常进行处理的代码段4/代码段代码段5v使用try/catch块捕获异常,分为三种情况:第三种情况第三种情况产生异常对象产生异常对象16try/catch块7-7v使用示例模拟第三种情况:publicclassAccpException2publicstaticvoidmain(Str

13、ingargs)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scannerin=newScanner(System.in);tryintcourseCode=in.nextInt();switch(courseCode)case1:System.out.println(C#编程编程);break;case2:System.out.println(Java编程编程);break;case3:System.out.println(SQL基础基础);catch(NullPointerExceptionex)System.out.println(

14、输入不为数字!输入不为数字!);System.out.println(欢迎提出建议!欢迎提出建议!);输入:输入:abc程序中断运行程序中断运行17try/catch/finally v在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try块块finally块块catch块块无异常无异常有异常有异常18try/catch/finally 2-2 publicclassAccpException3publicstaticvoidmain(Stringargs)System.out.print(请输入请输入1至至3之间的数字:之间的数字:)

15、;Scannerin=newScanner(System.in);tryintcourseCode=in.nextInt();switch(courseCode)case1:System.out.println(C#编程编程);break;case2:System.out.println(Java编程编程);break;case3:System.out.println(SQL基础基础);catch(Exceptionex)System.out.println(输入不为数字!输入不为数字!);finallySystem.out.println(欢迎提出建议!欢迎提出建议!);输入:输入:2Jav

16、a编程编程欢迎提出建议欢迎提出建议!控制台输出控制台输出输入:输入:abc输入不为数字输入不为数字!欢迎提出建议欢迎提出建议!第一种情况:第一种情况:无异常无异常第二种情况:第二种情况:有异常有异常19publicvoidmethod()try/代码段代码段/产生异常产生异常(异常类型异常类型2)catch(异常类型异常类型1ex)/对异常进行处理的代码段对异常进行处理的代码段catch(异常类型异常类型2ex)/对异常进行处理的代码段对异常进行处理的代码段catch(异常类型异常类型3ex)/对异常进行处理的代码段对异常进行处理的代码段/代码段代码段多重catch块 2-1v一段代码可能会引

17、发多种类型的异常v当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句v执行其中的一条 catch 语句之后,其后的 catch 语句将被忽略 try与异常类型与异常类型1不匹配不匹配try/catch块后的代码段块后的代码段发生异常发生异常产生异常对象产生异常对象catch与异常类型与异常类型2匹配匹配catchcatch程序继续执行程序继续执行进入进入catch块块20多重catch块 2-2publicclassAccpException4publicstaticvoidmain(Stringargs)Scannerin=newScanner(S

18、ystem.in);trySystem.out.print(“请输入请输入S1的总学时:的总学时:);inttotalTime=in.nextInt();/总学时总学时System.out.print(“请输入请输入S1的课程数目:的课程数目:);inttotalCourse=in.nextInt();/课程数目课程数目System.out.println(“S1各课程的平均学时为:各课程的平均学时为:+totalTime/totalCourse);catch(InputMismatchExceptione1)System.out.println(输入不为数字输入不为数字!);catch(Ar

19、ithmeticExceptione2)System.out.println(课程数目不能为零课程数目不能为零!);catch(Exceptione)System.out.println(发生错误发生错误:+e.getMessage();输入:输入:270H在安排在安排catch语句的顺序时,首先应该捕获最特殊的异常,语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化,即先子类后父类然后再逐渐一般化,即先子类后父类输出:输出:输入不为数字输入不为数字!进入第一个进入第一个catch块块输入:输入:2700输出:输出:课程数目不能为零课程数目不能为零!进入第二个进入第二个catch块块21

20、抛出异常v如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理 publicclassAccpTeacherprivateStringid;/教员编号,长度应为教员编号,长度应为7publicvoidsetId(StringpId)/判断教员编号的长度是否为判断教员编号的长度是否为7if(pId.length()=7)id=pId;elsethrownewIllegalArgumentException(参数长度应为参数长度应为7!);publicclassAccpTeacherTestpublicstaticvoidmain(Stringargs)AccpTeacherteac

21、her=newAccpTeacher();tryteacher.setId(088);catch(IllegalArgumentExceptionex)System.out.println(ex.getMessage();抛出异常抛出异常捕获异常捕获异常参数长度应为参数长度应为7!控制台输出控制台输出22声明异常publicclassAccpTeacherprivateStringid;/教员编号教员编号,长度应为长度应为7publicvoidsetId(StringpId)throwsIllegalArgumentException/判断教员编号的长度是否为判断教员编号的长度是否为7if(p

22、Id.length()=7)id=pId;elsethrownewIllegalArgumentException(参数长度应为参数长度应为7!);publicclassAccpTeacherTestpublicstaticvoidmain(Stringargs)AccpTeacherteacher=newAccpTeacher();tryteacher.setId(088);catch(IllegalArgumentExceptionex)System.out.println(ex.getMessage();由调用者捕获异常由调用者捕获异常声明该方法可能会产生异常声明该方法可能会产生异常23

23、用户自定义异常 v自定义异常概念v使用自定义异常的时候JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常 v自定义异常需要继承Exception 及其子类24用户自定义异常 v创建一个类继承 Exception 或其子类v为该异常类添加构造方法v在一个方法中使用throw抛出异常v在另一个方法中捕获并处理异常classMyExceptionextendsExceptionprivateinti;MyException(inta)i=a;publicStringtoString()returni+大于大于10啦啦;25用户自定义异常 2-3publicc

24、lassExceptionDemostaticvoidgo(inta)throwsMyExceptionSystem.out.println(a=+a);if(a10)thrownewMyException(a);System.out.println(正常结束正常结束);publicstaticvoidmain(Stringargs)trygo(1);go(20);catch(MyExceptione)System.out.println(捕获异常捕获异常:+e);控制台输出控制台输出a=1正常结束正常结束a=20捕获异常捕获异常:20大于大于10啦啦26总结请给出下列Java代码的运行结果

25、publicclassTestpublicstaticvoidmain(Stringargs)newTest().test();publicvoidtest()tryintarr=newint3;arr3=2;System.out.println(try);catch(ArrayIndexOutOfBoundsExceptione)System.out.println(catch1);catch(Exceptione)System.out.println(catch2);finallySystem.out.println(finally);控制台输出控制台输出catch1finally27总结请给出下列Java代码的运行结果 publicclassTestEpublicstaticvoidmain(Stringargs)trytest();catch(Exceptione)System.out.println(exception);System.out.println(end);publicstaticvoidtest()throwsExceptiontrythrownewException();finallySystem.out.println(finally);控制台输出控制台输出finallyexceptionend28结束语结束语谢谢大家聆听!谢谢大家聆听!29

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号