异常及其处理机制.ppt
- 文档编号:18862297
- 上传时间:2024-02-02
- 格式:PPT
- 页数:26
- 大小:1,021KB
异常及其处理机制.ppt
《异常及其处理机制.ppt》由会员分享,可在线阅读,更多相关《异常及其处理机制.ppt(26页珍藏版)》请在冰点文库上搜索。
APP开发工作室Java语言基础语言基础第7章:
异常及其处理机制本章目标了解异常的基本概念掌握异常的基本处理格式掌握异常类的继承结构掌握Java的异常处理机制掌握throws与throw关键字的作用掌握Exception与RuntimeException的区别可以自定义异常类异常异常是导致程序中断运行的一种指令流导致程序中断运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失,所以在程序的设计中必须要考虑各种异常的发生,并正确的做好相应的处理,这样才能保证程序正常的执行认识异常publicclassExceptionDemo01publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=10;/定义整型变量intj=0;/定义整型变量inttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);System.out.println(*计算结束*);异常处理格式try/有可能出现异常的语句catch(异常类异常对象)/编写异常的处理语句catch(异常类异常对象)/编写异常的处理语句catch(异常类异常对象)/编写异常的处理语句.finally一定会运行到的程序代码;对异常进行捕捉publicclassExceptionDemo02publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=10;/定义整型变量intj=0;/定义整型变量tryinttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);/此代码不再执行System.out.println(-);/此代码不再执行catch(ArithmeticExceptione)/捕捉算术异常System.out.println(出现异常了:
+e);/出现异常执行异常处理语句System.out.println(*计算结束*);程序执行流程异常的统一出口finallypublicclassExceptionDemo03publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=10;/定义整型变量intj=0;/定义整型变量tryinttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);/此代码不再执行System.out.println(-);/此代码不再执行catch(ArithmeticExceptione)/捕捉算术异常System.out.println(出现异常了:
+e);/出现异常执行异常处理语句finally/异常的统一出口System.out.println(不管是否出现异常,都执行此代码);System.out.println(*计算结束*);有多个异常的程序publicclassExceptionDemo04publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=0;/定义整型变量intj=0;/定义整型变量tryStringstr1=args0;/接收第一个参数Stringstr2=args1;/接收第二个参数i=Integer.parseInt(str1);/将第一个参数由字符串变为整型j=Integer.parseInt(str2);/将第二个参数由字符串变为整型inttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);/此代码不再执行System.out.println(-);/此代码不再执行catch(ArithmeticExceptione)/捕捉算术异常System.out.println(出现异常了:
+e);/出现异常执行异常处理语句System.out.println(*计算结束*);程序的异常以上的程序实际上产生了三个比较明显的异常数组超出绑定异常:
ArrayIndexOutOfBoundsException数字格式化异常:
NumberFormatException算术异常:
ArithmeticException此时如果要想保持程序的执行争取,就必须同时对三个异常进行处理,所以此时的catch语句应该有三个,以分别处理不同的异常。
捕捉多个异常publicclassExceptionDemo05publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=0;/定义整型变量intj=0;/定义整型变量tryStringstr1=args0;/接收第一个参数Stringstr2=args1;/接收第二个参数i=Integer.parseInt(str1);/将第一个参数由字符串变为整型j=Integer.parseInt(str2);/将第二个参数由字符串变为整型inttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);/此代码不再执行System.out.println(-);/此代码不再执行catch(ArithmeticExceptione)/捕捉算术异常System.out.println(算术异常:
+e);/处理算术异常catch(NumberFormatExceptione)System.out.println(数字转换异常:
+e);/处理数字转换异常catch(ArrayIndexOutOfBoundsExceptione)System.out.println(数组越界异常:
+e);/处理数组越界System.out.println(*计算结束*);异常类的继承结构在整个java的异常结构中,实际上有以下两个最常用的类:
Exception、Error,这两个类全都是Throwable的子类Exception:
一般表示的是程序中出现的问题,可以直接使用trycatch处理。
Error:
一般指的是JVM错误,程序中无法处理。
Java的异常处理机制在整个java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下:
一旦产生异常,则首先会产生一个异常类的实例化对象;在try语句中对此异常对象进行捕捉;产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。
使用Exception处理其他异常从之前学习过的对象多态性可以清楚的知道,所有的子类实例可以全部使用父类接收,那么就可以利用向上转型的概念,让所有的异常对象都使用Exception接收。
注意:
在java中所有捕获范围小的异常,必须放在捕获大的异常之前。
否则程序在编译的时候就会出现错误提示。
使用Exception处理异常publicclassExceptionDemo08publicstaticvoidmain(Stringargs)System.out.println(*计算开始*);inti=0;/定义整型变量intj=0;/定义整型变量tryStringstr1=args0;/接收第一个参数Stringstr2=args1;/接收第二个参数i=Integer.parseInt(str1);/将第一个参数由字符串变为整型j=Integer.parseInt(str2);/将第二个参数由字符串变为整型inttemp=i/j;/此处会产生异常System.out.println(两个数字相除结果:
+temp);/此代码不再执行System.out.println(-);/此代码不再执行catch(Exceptione)/异常捕获范围大System.out.println(其他异常:
+e);/处理异常System.out.println(*计算结束*);throws关键字在定义一个方法的时候可以使用throws关键字声明,使用throws声明的方法表示此方法不处理异常,而交给方法的调用处进行处理。
throws使用格式public返回值类型方法名称(参数列表)throws异常类异常类使用throws关键字classMathpublicintdiv(inti,intj)throwsException/本方法中可以不处理异常inttemp=i/j;/此处有可能产生异常returntemp;/返回计算结果publicclassThrowsDemo01publicstaticvoidmain(Stringargs)Mathm=newMath();/实例化Math对象try/因为有throws,不管是否有异常,都必须处理System.out.println(除法操作:
+m.div(10,2);catch(Exceptione)e.printStackTrace();/打印异常在主方法处使用throws关键字classMathpublicintdiv(inti,intj)throwsException/本方法中可以不处理异常inttemp=i/j;/此处有可能产生异常returntemp;/返回计算结果publicclassThrowsDemo02/本方法中的所有异常都可以不使用try.cathch处理的publicstaticvoidmain(Stringargs)throwsExceptionMathm=newMath();/实例化Math对象System.out.println(除法操作:
+m.div(10,2);throw关键字与throws不同的是,可以直接使用throw抛出一个异常。
抛出的时候直接抛出异常类的实例化对象即可。
抛出异常publicclassThrowDemo01publicstaticvoidmain(Stringargs)trythrownewException(自己抛出的异常!
);/抛出异常的实例化对象catch(Exceptione)/捕获异常System.out.println(e);范例throw与throws的应用实际上,在开发中,像trycatchfinally,throw,throws联合使用的情况是比较多的,例如:
现在要设计一个相除的方法,但是要求必须打印”计算开始”,”计算结束”等信息,如果有异常则交给调用处处理范例throw与throws的应用classMathpublicintdiv(inti,intj)throwsException/方法可以不处理异常System.out.println(*计算开始*);inttemp=0;/声明整型变量trytemp=i/j;/如果产生异常,则执行catchcatch(Exceptione)/捕获异常throwe;/把异常交给被调用处finally/不管是否产生异常都执行此代码System.out.println(*计算结束*);returntemp;publicclassThrowDemo02publicstaticvoidmain(Stringargs)Mathm=newMath();/实例化Math对象trySystem.out.println(除法操作:
+m.div(10,0);catch(Exceptione)/进行异常的捕获System.out.println(异常产生:
+e);程序执行流程Exception与RuntimeException这两个类的区别如下:
Exception在程序中是必须使用trycatch进行处理RuntimeException可以不使用trycatch进行处理,但是如果有异常产生,则异常将由JVM进行处理publicclassRuntimeExceptionDemo01publicstaticvoidmain(Stringargs)Stringstr=123;/定义一个由数字组成的字符串inttemp=Integer.parseInt(str);/将字符串变为int类型System.out.println(temp*temp);/计算乘方自定义异常类在Java中已经提供了大量的异常类,但是这些异常类有些时候也很难满足开发者的要求,所以此时用户可以根据自己的需要定义自己的异常类,定义异常类,只需要继承Exception类即可。
classMyExceptionextendsException/自定义异常类,继承Exception类publicMyException(Stringmsg)/构造方法接收异常信息super(msg);/调用父类中的构造方法publicclassDefaultExceptionpublicstaticvoidmain(Stringargs)trythrownewMyException(自定义异常。
);/抛出异常catch(Exceptione)/异常处理System.out.println(e);End
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 异常 及其 处理 机制