《异常的捕获及处理》PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
④抛它
初始化 程序员 程序员 JVM(自动)
5
1.异常范例——ExceptionDemo01.java
public class ExceptionDemo01{ public static void main(String args[]){ System.out.println("******* 计算开始 *******") ; int i = 10 ; int j = 0 ; int temp = i / j ; System.out.println("两个数字相除的结果:" + temp) ; System.out.println("******* 计算结束 *******") ; }
4
6.3 异常处理机制
创建类 创建对象
Java库类中的类 SUN
程序员
用户创建的类 程序员 程序员
异常类
SUN
出现异常的语句
异常处理的两种方式 ①捕获异常 try——catch——finally ②抛出异常 throw 、throws
• 处理异常时编程人员做什么?
①给异源自文库类对象起名字
②抓它
③处理它
Object Throwable
• 查阅API文档
Error
Exception
RuntimeException IOException ……
3
6.2 异常类的继承结构
• Error 类:应用程序在运行期间发生的严重错误。例如,虚拟 机内存用尽、堆栈溢出等。(程序员管不了)
• Exception 类:几十个子类,描述了不同类型的异常。 ⑴非检查性异常:编译器在编译程序时不进行检查,到运行时才 会显现。例如RuntimeException,像数组越界异常、整数除以零 异常等。这类异常应该通过反复测试尽量避免,不应该靠异常处 理机制来处理,主要是由程序员经验不足或思维不够缜密造成的。 ⑵检查性异常:编译器在编译程序时必须进行异常处理,否则编 译时不能通过。例如IOException,像数据库连接失败、用光盘时 用户没插入光盘等。这类异常程序员是无法避免的,应由异常处 理机制处理。
}
2.异常处理 try-catch-finally
try{
可能出现异常的语句;
}catch(异常类1 异常对象名){
异常1的处理语句;
}catch(异常类2 异常对象名){
异常2的处理语句;
}… finally{
一定要运行的语句;
}
关键字作用 try:捕捉异常 catch:处理异常 finally:异常的统
• 程序员在程序的设计中必须考虑到各种异常的发生,并做 好相应的处理。
• 通常一个好的程序,整体的1/3是在处理要完成的真正任务, 而2/3是在处理异常,这样的程序才是最强壮的。
• Java提供一套完整的异常处理机制,保证程序的正常运行.
2
6.2 异常类的继承结构
• Java程序中的异常现象也采用了面向对象的思想,所 有的异常都使用类来描述。
一出口
7
范例ExceptionDemo02.java
public class ExceptionDemo02{
public static void main(String args[]){
System.out.println("****** 计算开始 ********") ;
int i = 10 ;
System.out.println("算术异常:
" + e) ; ③ }catch( NumberFormatException e){
④
System.out.println("数字转换异
常:" + e);
}catch( ArrayIndexOutOfBoundsException e){
System.out.println("数组越界异常:" +
int j = 0 ;
try{
int temp = i / j ;
//
此处产生了异常
catchS(ysAtreimt.homuett.ipcrEixnctelpnt(i"o两n个a数e字){相除的结果:" +
temp) ;
System.out.println("出现异常了:" + ae) ;
}
System.out.println("******* 计算结束 *********") ;
9
范例ExceptionDemo04.java
public class ExceptionDemo04{
public static void main(String[] args){
int i , j ;
try{ String str1 = args[0] ;
// 可能有异
常
String str2 = args[1] ;
e) ;
10
验证finally的作用:异常的统一出口
public class ExceptionDemo03{ public static void main(String[] args){ System.out.println("******** 计算开始 *******") ; int i = 10 ; int j = 2 ; try{ int temp = i / j ; System.out.println("两个数字相除的结果:" + temp) ; }catch(ArithmeticException ae){ System.out.println("出现异常了:" + ae) ; }finally{ System.out.println("不管是否出现异常,都执行此代码
//
可能有异常
i=
Integer.parseInt( str1 );
j = Integer.parseInt( str2 );
int temp = i / j ;
// 可能有异
常
①
System.out.println("相除的结果: " + temp);
②
}catch( ArithmeticException e){
}
}
多重catch处理异常
• 程序在开发中不会只存在一个异常,肯定会同时存在 多个异常。此时就需要使用多个catch语句进行处理
• 编程:使用键盘输入两个数据,进行除法操作。 • 分析(考虑异常情况): ➢ 没有输入参数或个数不够——数组超出绑定异常 ➢ 输入的参数不是数字——数字格式化异常 ➢ 除数为零——算术异常 ➢ ……
第6章 异常的捕获及处理
6.1 异常简介 6.2 异常类的继承结构 6.3 异常处理机制 6.4 本章小结
1
6.1 异常简介
• 在程序运行过程中,可能会遇到一些非正常的状况。例如: 除以零、数组越界、文件读写时找不到指定的路径、数据 库操作时连接不到指定的服务器。此时程序将无法继续运 行,导致整个程序运行中断。这种非正常状况对程序来说 是一种异常。