java异常处理课件_第1页
java异常处理课件_第2页
java异常处理课件_第3页
java异常处理课件_第4页
java异常处理课件_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

异常处理1精选2021版课件目标理解异常的概念 运用try块、catch块和finally块处理异常运用多重catch块处理异常运用嵌套try/catch块处理异常运用关键字throw和throws处理异常运用JAVA编写和使用自定义异常2精选2021版课件生活中的异常正常情况下但是,异常情况迟早要发生!一路畅通堵车!撞车!3精选2021版课件程序中的异常publicclassHelloAccp{publicstaticvoidmain(String[]args){System.out.print("请输入1至3之间的数字:");Scannerin=newScanner(System.in);intcourseCode=in.nextInt();//从键盘输入整数switch(courseCode){case1:System.out.println("C#编程");break;case2:System.out.println("Java编程");break;case3:System.out.println("SQL基础");}}}输入:1输出:C#编程输入:abc程序中断运行!正常情况:异常情况:4精选2021版课件什么是异常异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序绕行或者等待请求交警解决异常!面对异常该怎么办呢?通常情况下,我们会这样处理:程序运行程序中断运行堵车!撞车!生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活5精选2021版课件ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatException……异常类的层次结构Throwable具有两个子类,它们是Exception:处理用户程序应当捕获的异常情况Error:Error类的异常为内部错误,因此在正常情况下不期望用户的程序捕获它们AWTError6精选2021版课件Java异常类文件结束EOFException找不到文件FileNotFoundExceptionI/O异常的根类IOException数字转化格式异常,比如字符串到float型数字的转换无效NumberFormatException不能加载所需的类ClassNotFoundException方法接收到非法参数IllegalArgumentException数组大小小于或大于实际的数组大小ArrayIndexOutOfBoundException尝试访问null对象成员NullPointerException许多java.lang异常的基类RuntimeException异常层次结构的根类Exception算术错误情形,如以零作除数ArithmeticException线程中断InterruptedException说明异常7精选2021版课件什么是异常处理Java编程语言使用异常处理机制为程序提供了错误处理的能力程序中预先想好了对付异常的处理办法异常!程序运行处理完毕,程序继续运行对异常进行处理8精选2021版课件Java中如何进行异常处理Java的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws捕获异常catchtryfinally执行可能产生异常的代码捕获异常无论是否发生异常,代码总能执行手动抛出异常抛出异常throw声明异常声明方法可能要抛出的各种异常throws9精选2021版课件异常处理块的一般形式try{ //要监控错误的代码块}catch(Exceptione){ //Exceptione的异常处理程序}finally{ //在try结束前要执行的代码块}10精选2021版课件try/catch块trycatchtry/catch块后的代码段publicvoidmethod(){try{//代码段(此处不会产生异常)}catch(异常类型ex){//对异常进行处理的代码段}//代码段}使用try/catch块捕获异常,分为三种情况:第一种情况11精选2021版课件try/catch块7-2使用示例模拟第一种情况:publicclassAccpException{publicstaticvoidmain(String[]args){System.out.print("请输入1至3之间的数字:");Scannerin=newScanner(System.in);try{intcourseCode=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("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:2Java编程欢迎提出建议!控制台输出12精选2021版课件try/catch块trycatch异常类型匹配try/catch块后的代码段进入catch块publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第二种情况产生异常对象程序继续执行异常是一种特殊的对象,类型为java.lang.Exception或其子类

发生异常13精选2021版课件try/catch块7-4使用示例模拟第二种情况:publicclassAccpException{publicstaticvoidmain(String[]args){System.out.print("请输入1至3之间的数字:");Scannerin=newScanner(System.in);try{intcourseCode=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("输入不为数字!");

ex.printStackTrace();}System.out.println("欢迎提出建议!");}}输入:abc输入不为数字!异常堆栈信息欢迎提出建议!控制台输出14精选2021版课件printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程publicclassAccpException{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=in.nextInt();//此处代码省略}catch(Exceptionex){System.out.println("输入不为数字!");

ex.printStackTrace();}System.out.println("欢迎提出建议!");}}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)异常类型异常堆栈信息在此方法中抛出了异常15精选2021版课件try/catch块trycatch异常类型不匹配try/catch块后的代码段程序中断运行

发生异常publicvoidmethod(){try{//代码段1//产生异常的代码段2//代码段3}catch(异常类型ex){//对异常进行处理的代码段4}//代码段5}使用try/catch块捕获异常,分为三种情况:第三种情况产生异常对象16精选2021版课件try/catch块7-7使用示例模拟第三种情况:publicclassAccpException2{publicstaticvoidmain(String[]args){System.out.print("请输入课程代号(1至3之间的数字):");Scannerin=newScanner(System.in);try{intcourseCode=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("输入不为数字!");}System.out.println("欢迎提出建议!");}}输入:abc程序中断运行17精选2021版课件try/catch/finally在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try块finally块catch块无异常有异常18精选2021版课件try/catch/finally2-2publicclassAccpException3{publicstaticvoidmain(String[]args){System.out.print("请输入1至3之间的数字:");Scannerin=newScanner(System.in);try{intcourseCode=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("输入不为数字!");}finally

{System.out.println("欢迎提出建议!");}}}输入:2Java编程欢迎提出建议!控制台输出输入:abc输入不为数字!欢迎提出建议!第一种情况:无异常第二种情况:有异常19精选2021版课件publicvoidmethod(){try{//代码段//产生异常(异常类型2)}catch(异常类型1ex){//对异常进行处理的代码段}catch(异常类型2ex){//对异常进行处理的代码段}catch(异常类型3ex){//对异常进行处理的代码段}//代码段}多重catch块2-1一段代码可能会引发多种类型的异常当引发异常时,会按顺序来查看每个catch语句,并执行第一个与异常类型匹配的catch语句执行其中的一条catch语句之后,其后的catch语句将被忽略

try与异常类型1不匹配try/catch块后的代码段发生异常产生异常对象catch与异常类型2匹配catchcatch程序继续执行进入catch块20精选2021版课件多重catch块2-2publicclassAccpException4{publicstaticvoidmain(String[]args){Scannerin=newScanner(System.in);try{System.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(ArithmeticExceptione2){System.out.println("课程数目不能为零!");}catch(Exceptione){System.out.println("发生错误:"+e.getMessage());}}}输入:270H在安排catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化,即先子类后父类输出:输入不为数字!进入第一个catch块输入:2700输出:课程数目不能为零!进入第二个catch块21精选2021版课件抛出异常如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理publicclassAccpTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId){//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}publicclassAccpTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}抛出异常捕获异常参数长度应为7!控制台输出22精选2021版课件声明异常publicclassAccpTeacher{privateStringid;//教员编号,长度应为7publicvoidsetId(StringpId)throwsIllegalArgumentException{//判断教员编号的长度是否为7if(pId.length()==7){id=pId;}else{thrownewIllegalArgumentException("参数长度应为7!");}}}publicclassAccpTeacherTest{publicstaticvoidmain(String[]args){AccpTeacherteacher=newAccpTeacher();try{teacher.setId("088");}catch(IllegalArgumentExceptionex){System.out.println(ex.getMessage());}}}由调用者捕获异常声明该方法可能会产生异常23精选2021版课件用户自定义异常自定义异常概念使用自定义异常的时候JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常自定义异常需要继承Exception及其子类24精选2021版课件用户自定义异常创建一个类继承Exception或其子类为该异常类添加构造方法在一个方法中使用throw抛出异常在另一个方法中捕获并处理异常classMyExceptionextendsException{ privateinti; MyException(inta){ i=a; } publicStringtoString(){ returni+"大于10啦"; }}25精选2021版课件用户自定义异常2-3publicclassExceptionDemo{ staticvoidgo(inta)throwsMyException{ System.out.println("a="+a); if(a>10) thrownewMyException(a); System.out.println("正常结束"); } publicstaticvoidmain(String[]args){ try{ go(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论