异常84974.ppt

上传人:hyn****60 文档编号:71374072 上传时间:2023-02-03 格式:PPT 页数:25 大小:486.50KB
返回 下载 相关 举报
异常84974.ppt_第1页
第1页 / 共25页
异常84974.ppt_第2页
第2页 / 共25页
点击查看更多>>
资源描述

《异常84974.ppt》由会员分享,可在线阅读,更多相关《异常84974.ppt(25页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、使用异常处理程序错误使用异常处理程序错误第六章第六章第六章第六章回顾什么是常量?Java中,常量的定义规则有哪些?什么是面向接口编程,它的好处是什么?2本章任务升级HelloACCP,完成如下功能:n根据课程代码输出课程名称3本章主要学习内容nJava异常的概念和分类nJava异常处理机制q捕获和处理异常q声明抛弃异常q人工抛出异常n用户自定义异常4生活中的异常n正常情况下,小王每日开车去上班,耗时大约30分钟n但是,异常情况迟早要发生!一路畅通一路畅通堵车!堵车!撞车!撞车!5程序中的异常public class HelloAccp public static void main(Strin

2、g args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scanner in=new Scanner(System.in);int courseCode=in.nextInt();/从键盘输入整数从键盘输入整数switch(courseCode)case 1:System.out.println(C#编程编程);break;case 2:System.out.println(Java编程编程);break;case 3:System.out.println(SQL基础基础);输入:输入:2输出:输出:Java编程编程输入:输入:B程序中

3、断运行!程序中断运行!正常情况:正常情况:异常情况:异常情况:6什么是异常n异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序绕行或者等待绕行或者等待请求交警解决请求交警解决异常!异常!n面对异常该怎么办呢?通常情况下,我们会这样处理:程序运行程序运行程序中断运行程序中断运行堵车!堵车!撞车!撞车!生活中,我们会根据不同的异常进行相应的处理,生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活而不会就此中断我们的生活7什么是异常处理nJava语言使用异常处理机制为程序提供了错误处理的能力程序中预先想好了程序中预先想好了 对付异常的处理办法对付异常的处理办法

4、异常!异常!程序运行程序运行处理完毕,程序继续运行处理完毕,程序继续运行对异常进行处理对异常进行处理8Java中如何进行异常处理nJava的异常处理是通过5个关键字来实现的:try、catch、finally、throw、throws 捕获异常捕获异常 catchtryfinally执行可能产生执行可能产生 异常的代码异常的代码 捕获异常捕获异常 无论是否发生异常,无论是否发生异常,代码总能执行代码总能执行手动抛出异常手动抛出异常 抛出异常抛出异常 throw声明异常声明异常 声明方法可能要声明方法可能要抛出的各种异常抛出的各种异常 throws9try/catch块7-1trycatch t

5、ry/catch 块后的代码段块后的代码段public void method()try /代码段代码段(此处不会产生异常此处不会产生异常)catch(异常类型异常类型 ex)/对异常进行处理的代码段对异常进行处理的代码段/代码段代码段n使用try/catch块捕获异常,分为三种情况:第一种情况第一种情况 10try/catch块7-2n使用示例模拟第一种情况:public class AccpException public static void main(String args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scann

6、er in=new Scanner(System.in);try int courseCode=in.nextInt();switch(courseCode)case 1:System.out.println(C#编程编程);break;case 2:System.out.println(Java编程编程);break;case 3:System.out.println(SQL基础基础);catch(Exception ex)System.out.println(输入不为数字输入不为数字!);System.out.println(欢迎提出建议欢迎提出建议!);输入:输入:2Java编程编程欢迎

7、提出建议欢迎提出建议!控制台输出控制台输出11try/catch块7-3trycatch异常类型匹配异常类型匹配 try/catch 块后的代码段块后的代码段进入进入catch块块public void method()try /代码段代码段 1 /产生异常的代码段产生异常的代码段 2 /代码段代码段 3 catch(异常类型异常类型 ex)/对异常进行处理的代码段对异常进行处理的代码段4/代码段代码段5n使用try/catch块捕获异常,分为三种情况:第二种情况第二种情况 产生异常对象产生异常对象 程序继续执行程序继续执行异常是一种特殊的对象,异常是一种特殊的对象,类型为类型为java.la

8、ng.Exception或其子类或其子类 发生异常发生异常12try/catch块7-4n使用示例模拟第二种情况:public class AccpException public static void main(String args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scanner in=new Scanner(System.in);try int courseCode=in.nextInt();switch(courseCode)case 1:System.out.println(C#编程编程);break;case 2

9、:System.out.println(Java编程编程);break;case 3:System.out.println(SQL基础基础);catch(Exception ex)System.out.println(输入不为数字输入不为数字!);ex.printStackTrace();System.out.println(欢迎提出建议欢迎提出建议!);输入:输入:B输入不为数字输入不为数字!异常堆栈信息异常堆栈信息欢迎提出建议欢迎提出建议!控制台输出控制台输出13nprintStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程 public class AccpExcepti

10、on public static void main(String args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scanner in=new Scanner(System.in);try int courseCode=in.nextInt();/此处代码省略此处代码省略 catch(Exception ex)System.out.println(输入不为数字!输入不为数字!);ex.printStackTrace();System.out.println(欢迎提出建议欢迎提出建议!);try/catch块7-5java.util

11、.InputMismatchExceptionat java.util.Scanner.throwFor(Scanner.java:840)at java.util.Scanner.next(Scanner.java:1461)at java.util.Scanner.nextInt(Scanner.java:2091)at java.util.Scanner.nextInt(Scanner.java:2050)at s2jsp.sg.ch05.AccpException.main(AccpException.java:23)异常类型异常类型异常堆栈信息异常堆栈信息在此方法中抛出了异常在此方法

12、中抛出了异常14try/catch块7-6trycatch异常类型不匹配异常类型不匹配 try/catch 块后的代码段块后的代码段程序中断运行程序中断运行 发生异常发生异常public void method()try /代码段代码段 1 /产生异常的代码段产生异常的代码段 2 /代码段代码段 3 catch(异常类型异常类型 ex)/对异常进行处理的代码段对异常进行处理的代码段4/代码段代码段5n使用try/catch块捕获异常,分为三种情况:第三种情况第三种情况 产生异常对象产生异常对象 15try/catch块7-7n使用示例模拟第三种情况:public class AccpExcep

13、tion2 public static void main(String args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scanner in=new Scanner(System.in);try int courseCode=in.nextInt();switch(courseCode)case 1:System.out.println(C#编程编程);break;case 2:System.out.println(Java编程编程);break;case 3:System.out.println(SQL基础基础);catch(N

14、ullPointerException ex)System.out.println(输入不为数字!输入不为数字!);System.out.println(欢迎提出建议!欢迎提出建议!);输入:输入:B程序中断运行程序中断运行16try/catch/finally 2-1n在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行try 块块 finally 块块 catch 块块 无异常无异常 有异常有异常 17try/catch/finally 2-2 public class AccpException3 public static void

15、 main(String args)System.out.print(请输入课程代号请输入课程代号(1至至3之间的数字之间的数字):);Scanner in=new Scanner(System.in);try int courseCode=in.nextInt();switch(courseCode)case 1:System.out.println(C#编程编程);break;case 2:System.out.println(Java编程编程);break;case 3:System.out.println(SQL基础基础);catch(Exception ex)System.out.p

16、rintln(输入不为数字!输入不为数字!);finally System.out.println(欢迎提出建议!欢迎提出建议!);输入:输入:2Java编程编程欢迎提出建议欢迎提出建议!控制台输出控制台输出输入:输入:B输入不为数字输入不为数字!欢迎提出建议欢迎提出建议!第一种情况:第一种情况:无异常无异常第二种情况:第二种情况:有异常有异常 18小结 1n编写一个类ExceptionTest1,在main方法中使用try、catch、finally:q在try块中,编写被0除的代码q在catch块中,捕获被0除所产生的异常,并且打印异常信息q在finally块中,打印一条语句19publi

17、c void method()try /代码段代码段 /产生异常产生异常(异常类型异常类型2)catch(异常类型异常类型1 ex)/对异常进行处理的代码段对异常进行处理的代码段 catch(异常类型异常类型2 ex)/对异常进行处理的代码段对异常进行处理的代码段 catch(异常类型异常类型3 ex)/对异常进行处理的代码段对异常进行处理的代码段/代码段代码段多重catch块 2-1n一段代码可能会引发多种类型的异常n当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句n执行其中的一条 catch 语句之后,其后的 catch 语句将被忽略 try

18、与异常类型与异常类型1不匹配不匹配try/catch 块后的代码段块后的代码段发生异常发生异常产生异常对象产生异常对象catch与异常类型与异常类型2匹配匹配catchcatch程序继续执行程序继续执行进入进入catch块块20多重catch块 2-2public class AccpException4 public static void main(String args)Scanner in=new Scanner(System.in);trySystem.out.print(“请输入请输入S1的总学时:的总学时:);int totalTime=in.nextInt();/总学时总学时S

19、ystem.out.print(“请输入请输入S1的课程数目:的课程数目:);int totalCourse=in.nextInt();/课程数目课程数目System.out.println(“S1各课程的平均学时为:各课程的平均学时为:+totalTime/totalCourse);catch(InputMismatchException e1)System.out.println(输入不为数字输入不为数字!);catch(ArithmeticException e2)System.out.println(课程数目不能为零课程数目不能为零!);catch(Exception e)System

20、.out.println(发生错误发生错误:+e.getMessage();输入:输入:270 H 在安排在安排catch语句的顺序时,首先应该捕获最特殊的异常,语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化,即先子类后父类然后再逐渐一般化,即先子类后父类 输出:输出:输入不为数字输入不为数字!进入第一个进入第一个catch块块输入:输入:270 0 输出:输出:课程数目不能为零课程数目不能为零!进入第二个进入第二个catch块块21抛出异常n如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理 public class AccpTeacher private Stri

21、ng id;/教员编号,长度应为教员编号,长度应为7 public void setId(String pId)/判断教员编号的长度是否为判断教员编号的长度是否为7 if(pId.length()=7)id=pId;else throw new IllegalArgumentException(参数长度应为参数长度应为7!);抛出异常:抛出异常:在不使用在不使用try、catch语句或语句或throws的前提下,只可以抛出运行的前提下,只可以抛出运行时异常对象时异常对象RuntimeException或其子类对象,如:或其子类对象,如:NullPointerException、IllegalA

22、rgumentException等等public class AccpTeacherTest public static void main(String args)AccpTeacher teacher=new AccpTeacher();try teacher.setId(088);catch(IllegalArgumentException ex)System.out.println(ex.getMessage();捕获异常捕获异常参数长度应为参数长度应为7!控制台输出控制台输出22声明异常public class AccpTeacher private String id;/教员编号教

23、员编号,长度应为长度应为7 public void setId(String pId)throws IllegalArgumentException/判断教员编号的长度是否为判断教员编号的长度是否为7 if(pId.length()=7)id=pId;else throw new IllegalArgumentException(参数长度应为参数长度应为7!);public class AccpTeacherTest public static void main(String args)AccpTeacher teacher=new AccpTeacher();try teacher.set

24、Id(088);catch(IllegalArgumentException ex)System.out.println(ex.getMessage();由调用者捕获异常由调用者捕获异常 声明该方法可能会产生异常声明该方法可能会产生异常 23小结 2n编写类ExceptionTest2:q定义两个方法:go()和main()q在go方法中声明要抛出异常,在该方法体内,抛出一个Exception对象q在main()方法中,调用go方法,使用try/catch捕获go方法中抛出的异常完整代码实现完整代码实现24总结请给出下列Java代码的运行结果 public class Test public static void main(String args)try int arr=new int3;arr3=2;System.out.println(try);catch(ArrayIndexOutOfBoundsException e)System.out.println(catch 1);catch(Exception e)System.out.println(catch 2);finally System.out.println(finally);控制台输出控制台输出catch 1finally25

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com