异常处理机制精.ppt
《异常处理机制精.ppt》由会员分享,可在线阅读,更多相关《异常处理机制精.ppt(48页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、异常处理机制第1页,本讲稿共48页课程内容二二三三四四五五一一第2页,本讲稿共48页v在进行程序设计时,错误的产生是不可避免的在进行程序设计时,错误的产生是不可避免的如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?v这是任何程序设计语言都要解决的问题这是任何程序设计语言都要解决的问题一、传统处理方式一、传统处理方式第3页,本讲稿共48页vclass Calculate vstatic void calculate(int num1,int num2)vint nResult;vnResult=num1+num2;/加法运算vSystem.out.println(和=+nResult
2、);vnResult=num1-num2;/减法运算vSystem.out.println(差=+nResult);vnResult=num1*num2;/乘法运算vSystem.out.println(积=+nResult);v/除法运算,先判断分母为0 不?注1vif(num2!=0)vnResult=num1/num2;vSystem.out.println(商=+nResult);vvelsevSystem.out.println(Error,没有商,除数为0!);vv一、传统处理方式一、传统处理方式第4页,本讲稿共48页vif(num2!=0)nResult=num1%num2;v
3、System.out.println(余数=+nResultn第二次运算);velsevSystem.out.println(Error,没有余数,除数为0!);vvvvpublic class Traditional vpublic static void main(String aaa)vint x=9,y=6;vCalculate.calculate(x,y);/注3vx=7;vy=0;vCalculate.calculate(x,y);/注4vv一、传统处理方式一、传统处理方式运行结果:和=15差=3积=54商=1余数=3第二次运算和=7积=0Error,没有商,除数为0!Error,
4、没有余数除数为0!第5页,本讲稿共48页程序可读性差,大量的错误处理代码混杂在程序中程序可读性差,大量的错误处理代码混杂在程序中观察前面的程序,会发现大部分精力花在出错处理上观察前面的程序,会发现大部分精力花在出错处理上只把能够想到的错误考虑到,此外的情况无法处理只把能够想到的错误考虑到,此外的情况无法处理出错返回信息量太少,无法更确切的了解错误状况或原因出错返回信息量太少,无法更确切的了解错误状况或原因以常规方法处理错误存在的问题以常规方法处理错误存在的问题一、传统处理方式一、传统处理方式第6页,本讲稿共48页所谓所谓错误错误,是在程序运行过程中发生的异常事件,比如除,是在程序运行过程中发生
5、的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻止程溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的强壮性(序的正常运行。为了加强程序的强壮性(robust),程序),程序设计时,必须考虑到可能发生的异常事件并做出相应的处设计时,必须考虑到可能发生的异常事件并做出相应的处理。理。二、二、JavaJava异常处理机制异常处理机制第7页,本讲稿共48页vJava异常是异常是Java提供的用于处理程序中错误的一种机制。提供的用于处理程序中错误的一种机制。v所谓错误是指在程序运行过程中发生的一些异常事件(如:除所谓错误是指在程序运行过程中发生的一些异
6、常事件(如:除0溢溢出,数组下标越界,所要读取的文件不存在)。出,数组下标越界,所要读取的文件不存在)。v设计良好的程序应该在异常发生时提供处理这些错误的方法,设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。使得程序不会因为异常的发生而阻断或产生不可预见的结果。二、二、JavaJava异常处理机制异常处理机制第8页,本讲稿共48页vJava程序的执行过程中如出现异常事件,可以生成一个异常类对象,程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给该异常对象封装了异常事件的信息并将被提交给J
7、ava运行时系统,运行时系统,这个过程称为抛出(这个过程称为抛出(throw)异常。)异常。v当当Java运行时系统接收到异常对象时,会寻找处理这一异常的运行时系统接收到异常对象时,会寻找处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。)异常。二、二、JavaJava异常处理机制异常处理机制第9页,本讲稿共48页 三、三、JavaJava异常类异常类vJ2SDK定义了很多异常类,这些类对应了各种各样可能出现的异定义了很多异常类,这些类对应了各种各样可能出现的异常事件。常事件。ThrowableEorrorExce
8、ptionRuntimeException第10页,本讲稿共48页vError:称为错误,由称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。(也处理不了)虚拟机错误等,程序对其不做处理。(也处理不了)vException:所有异常类的父类,其子类对应了各种各样可能出现:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获。的异常事件,一般需要用户显式的声明或捕获。vRuntime Exception:一类特殊的异常,如被:一类特殊的异常,如被0除、数据下标越界除、数据下标越界等,其产生
9、比较频繁,处理麻烦,如果显式的声明或捕获将会对程等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。缺省的异常处理程序(用户可不必对其处理)。三、三、JavaJava异常类异常类第11页,本讲稿共48页v所有的包中都定义了异常类和错误类。所有的包中都定义了异常类和错误类。vException类是所有异常的父类类是所有异常的父类vError类是所有错误的父类,这两个类都实现了类是所有错误的父类,这两个类都实现了Throwable接口。
10、接口。三、三、JavaJava异常类异常类第12页,本讲稿共48页NCEPU3 异常分类 ThrowableErrorException虚拟机错误虚拟机错误内存溢出错误内存溢出错误图形界面错误图形界面错误内存溢内存溢出错误出错误栈溢出栈溢出错误错误类定义未类定义未找到错误找到错误第13页,本讲稿共48页NCEPU3 异常分类 ThrowableErrorExceptionRuntimeException运行时异常运行时异常文件已文件已结束异常结束异常文件未文件未找到异常找到异常方法未方法未找到异常找到异常输入输出输入输出异常异常图形界面图形界面异常异常第14页,本讲稿共48页NCEPU3 异常
11、分类 ThrowableErrorExceptionRuntimeException运行时异常运行时异常算术算术异常异常类型强制类型强制转换异常转换异常方法未方法未找到异常找到异常输入输出输入输出异常异常图形界面图形界面异常异常空指针空指针异常异常数组负数组负下标异常下标异常违背安全违背安全原则异常原则异常数组下标越界异常数组下标越界异常下标越界异常下标越界异常IndexOutOfBoundsExceptioncatch(ArrayIndexOutOfBoundsException e)catch(IndexOutOfBoundsException e)catch(RuntimeExcepti
12、on e)catch(Exception e)catch(Throwable e)第15页,本讲稿共48页v算术异常算术异常ArithmeticException整数除法中,若除数为整数除法中,若除数为0 0,或用,或用0 0取模,会发生该异常。取模,会发生该异常。例如:例如:int i=12/0;int m=5%0;其他算术操作不会产生异常其他算术操作不会产生异常 几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第16页,本讲稿共48页v空指针异常空指针异常NullPointerException当程序试图访问一个空对象(即没有实例化的对象)中的变量或方当程序试
13、图访问一个空对象(即没有实例化的对象)中的变量或方法,或一个空数组中的元素时,会发生该异常。法,或一个空数组中的元素时,会发生该异常。例如:例如:int a =null;a 0 =0;String s=null;System.out.println(s.length();几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第17页,本讲稿共48页v类型强制转换异常类型强制转换异常ClassCastException当进行类型强制转换时,对于不能进行的转换操作,会发生当进行类型强制转换时,对于不能进行的转换操作,会发生该异常。该异常。例如:例如:Object obj=n
14、ew Object();String s=(String)obj;几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第18页,本讲稿共48页v数组负下标异常数组负下标异常NagativeArraySizeException创建数组时,若数组元素个数为负,会发生该异常。创建数组时,若数组元素个数为负,会发生该异常。例如:例如:int a =new int -3;几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第19页,本讲稿共48页v数组下标越界异常数组下标越界异常ArrayIndexOutOfBoundsException试图访问一个越
15、界的数组元素时(即下标大于等于数组的成员变量试图访问一个越界的数组元素时(即下标大于等于数组的成员变量length),会发生该异常。会发生该异常。例如:例如:int a =new int 1;a 1 =3;几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第20页,本讲稿共48页vArithmeticExceptionvNullPointerExceptionvClassCastExceptionvNagativeArraySizeExceptionvArrayIndexOutOfBoundsException都是运行时异常类都是运行时异常类(RuntimeExce
16、ption)的子类的子类几个常见的公用异常类几个常见的公用异常类 三、三、JavaJava异常类异常类第21页,本讲稿共48页常见的异常类型 方 法 名说 明Exception 异常层次结构的根类ArithmeticException算术错误情形,如以零作除数ArrayIndexOutOfBoundsException数组下标越界NullPointerException尝试访问 null 对象成员ClassNotFoundException不能加载所需的类InputMismatchException欲得到数据类型与实际输入类型不匹配IllegalArgumentException方法接收到非法
17、参数ClassCastException对象强制类型转换出错NumberFormatException数字格式转换异常,如把abc转换成数字第22页,本讲稿共48页vJava的异常处理是通过的异常处理是通过5个关键字来实现的:个关键字来实现的:try、catch、finally、throw、throws 捕获异常 catchtryfinally执行可能产生 异常的代码 捕获异常 无论是否发生异常,代码总能执行手动抛出异常 抛出异常 throw声明异常 声明方法可能要抛出的各种异常 throws四、异常处理四、异常处理第23页,本讲稿共48页trycatch try-catch 块后的代码段pu
18、blic void method()try /代码段(此处不会产生异常)catch(异常类型 ex)/对异常进行处理的代码段/代码段v使用使用try-catch块捕获异常,分为三种情况:块捕获异常,分为三种情况:第一种情况 四、异常处理四、异常处理第24页,本讲稿共48页public class Test3 public static void main(String args)try Scanner in=new Scanner(System.in);System.out.print(请输入被除数:);int num1=in.nextInt();System.out.print(请输入除数:
19、);int num2=in.nextInt();System.out.println(String.format(%d/%d=%d,num1,num2,num1/num2);System.out.println(感谢使用本程序!);catch(Exception e)System.err.println(出现错误:被除数和除数必须是整数,+除数不能为零。);e.printStackTrace();try-catch块v使用示例模拟第一种情况:使用示例模拟第一种情况:输入:200,40演示示例:使用try-catch处理异常四、异常处理四、异常处理第25页,本讲稿共48页trycatch异常类型
20、匹配 try-catch 块后的代码段进入catch块public void method()try /代码段 1 /产生异常的代码段 2 /代码段 3 catch(异常类型 ex)/对异常进行处理的代码段4/代码段5v使用使用try-catch块捕获异常,分为三种情况:块捕获异常,分为三种情况:第二种情况 产生异常对象 程序继续执行异常是一种特殊的对象,类型为java.lang.Exception或其子类 发生异常try-catch块四、异常处理四、异常处理第26页,本讲稿共48页public class Test3 public static void main(String args)t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异常 处理 机制
限制150内