Java中的异常处理讲义资料

上传人:yulij****0329 文档编号:141069678 上传时间:2020-08-04 格式:PPT 页数:23 大小:767.50KB
返回 下载 相关 举报
Java中的异常处理讲义资料_第1页
第1页 / 共23页
Java中的异常处理讲义资料_第2页
第2页 / 共23页
Java中的异常处理讲义资料_第3页
第3页 / 共23页
Java中的异常处理讲义资料_第4页
第4页 / 共23页
Java中的异常处理讲义资料_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《Java中的异常处理讲义资料》由会员分享,可在线阅读,更多相关《Java中的异常处理讲义资料(23页珍藏版)》请在金锄头文库上搜索。

1、使用异常处理程序错误,第四章,掌握Java的异常处理机制 运用 try 、catch 、 finally 处理异常 运用 throw 抛出异常 运用 throws 声明异常,本章目标,生活中的异常,正常情况下,小王每日开车去上班,耗时大约30分钟,但是,异常情况迟早要发生!,一路畅通,堵车!,撞车!,什么是异常,异常就是在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序,绕行或者等待,请求交警解决,异常!,面对异常该怎么办呢?通常情况下,我们会这样处理:,程序运行,程序中断运行,堵车!,撞车!,生活中,我们会根据不同的异常进行相应的处理,而不会就此中断我们的生活,什么是异常处理,J

2、ava编程语言使用异常处理机制为程序提供了错误处理的能力,程序中预先想好了 对付异常的处理办法,异常!,程序运行,处理完毕,程序继续运行,对异常进行处理,Java中如何进行异常处理,Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws,捕获异常,catch,try,finally,执行可能产生 异常的代码,捕获异常,无论是否发生异常, 代码总能执行,手动抛出异常,抛出异常,throw,声明异常,声明方法可能要 抛出的各种异常,throws,try/catch块7-1,try,catch,try/catch 块后的代码段,public voi

3、d method() try / 代码段(此处不会产生异常) catch (异常类型 ex) / 对异常进行处理的代码段 / 代码段 ,使用try/catch块捕获异常,分为三种情况:,第一种情况,try/catch块7-2,使用示例模拟第一种情况:,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();

4、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(欢迎提出建议!); ,输入:2,Java编程 欢迎提出建议!,控制台输出,try/catch块7-3,try,catch,异常类型匹配,try/catch 块后的代码段,进入catch

5、块,public void method() try / 代码段 1 / 产生异常的代码段 2 / 代码段 3 catch (异常类型 ex) / 对异常进行处理的代码段4 / 代码段5 ,使用try/catch块捕获异常,分为三种情况:,第二种情况,产生异常对象,程序继续执行,异常是一种特殊的对象,类型为java.lang.Exception或其子类,发生异常,try/catch块7-4,使用示例模拟第二种情况:,public class AccpException public static void main(String args) System.out.print(请输入课程代号(1

6、至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.println(输入不为数字!); ex.printStackTrace(); Syste

7、m.out.println(欢迎提出建议!); ,输入:B,输入不为数字! 异常堆栈信息 欢迎提出建议!,控制台输出,printStackTrace的堆栈跟踪功能显示出程序运行到当前类的执行流程,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(); /此处代码省略 catch (Exception ex)

8、 System.out.println(输入不为数字!); ex.printStackTrace(); System.out.println(欢迎提出建议!); ,try/catch块7-5,try/catch块7-6,try,catch,异常类型不匹配,try/catch 块后的代码段,程序中断运行,发生异常,public void method() try / 代码段 1 / 产生异常的代码段 2 / 代码段 3 catch (异常类型 ex) / 对异常进行处理的代码段4 / 代码段5 ,使用try/catch块捕获异常,分为三种情况:,第三种情况,产生异常对象,try/catch块7-

9、7,使用示例模拟第三种情况:,public class AccpException2 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

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

11、tic 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 (Exception ex) Sys

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

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

14、h块,多重catch块 2-2,public class AccpException4 public static void main(String args) Scanner in = new Scanner(System.in); try System.out.print(“请输入S1的总学时:); int totalTime = in.nextInt(); /总学时 System.out.print(“请输入S1的课程数目:); int totalCourse = in.nextInt(); /课程数目 System.out.println(“S1各课程的平均学时为: + totalTi

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

16、程数目不能为零!,进入第二个 catch块,抛出异常,如果在当前环境无法解决一个异常,就要将其抛出,把异常交给调用者处理,public class AccpTeacher private String id; / 教员编号,长度应为7 public void setId(String pId) / 判断教员编号的长度是否为7 if (pId.length() = 7) id = pId; else throw new IllegalArgumentException(参数长度应为7!); ,public class AccpTeacherTest public static void main(String args) AccpTe

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

最新文档


当前位置:首页 > 中学教育 > 教学课件 > 高中课件

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