java 资料文档

上传人:痛*** 文档编号:244317178 上传时间:2024-10-03 格式:PPT 页数:24 大小:96KB
返回 下载 相关 举报
java 资料文档_第1页
第1页 / 共24页
java 资料文档_第2页
第2页 / 共24页
java 资料文档_第3页
第3页 / 共24页
点击查看更多>>
资源描述
单击此处编辑母版标题样,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第十二课,Java,异常处理,本课内容,Java,异常的概念和处理机制,Java,异常的分类,异常的捕获、处理和抛出,使用用户自定义异常,Java,异常,Java,程序运行过程中所发生的异常事件可分为两类:,错误(,Error):JVM,系统内部错误、资源耗尽等严重情况,违例(,Exception):,其它因编程错误或偶然的外在因素导致的一般性问题,例如:,对负数开平方根,空指针访问,试图读取不存在的文件,网络连接中断,Java,异常举例(1),public class Test12_1,public static void main(String,args,),String friends=,lisa,bily,kessy,;,for(int,i=0;i5;i+),System.out.println(friendsi,);,System.out.println(nthis,is the end);,Java,异常举例(2),程序,Test12_1,运行结果:,java Test12_1,lisa,bily,kessy,Exception in thread main,java.lang.ArrayIndexOutOfBoundsException,at Test12_1.main(Test12_1.java:5),Press any key to continue.,Java,异常类层次,常见异常,RuntimeException,错误的类型转换,数组下标越界,空指针访问,IOExeption,从一个不存在的文件中读取数据,越过文件结尾继续读取,连接一个不存在的,URL,异常处理机制,Java,程序的执行过程中如出现异常,会自动生成一个异常类对象,该异常对象将被提交给,Java,运行时系统,这个过程称为抛出(,throw),异常。,当,Java,运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(,catch),异常。,如果,Java,运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的,Java,程序也将退出。,程序员通常只能处理违例(,Exception),,而对错误(,Error),无能为力,异常处理举例(1),public class Test12_2,public static void main(String,args,),String friends=,lisa,bily,kessy,;,try,for(int,i=0;i5;i+),System.out.println(friendsi,);,catch(java.lang.ArrayIndexOutOfBoundsException,e),System.out.println(index,err);,System.out.println(nthis,is the end);,异常处理举例(2),程序,Test12_2,运行结果:,java Test12_2,lisa,bily,kessy,index err,this is the end,Press any key to continue.,捕获违例,捕获异常是通过,try-catch-finally,语句实现的。,try,.,/,可能产生违例的代码,catch(ExceptionName1 e),.,/,当产生,ExceptionName1,型,违例时的处置措施,catch(ExceptionName2 e),.,/,当产生,ExceptionName2,型违例时的处置措施,finally,.,/,无条件执行的语句,捕获违例,try,捕获违例的第一步是用,try,语句块选定捕获违例的范围。,catch,在,catch,语句块中是对违例对象进行处理的代码,每个,try,语句块可以伴随一个或多个,catch,语句,用于处理可能产生的不同类型的违例对象。与其它对象一样,可以访问一个违例对象的成员变量或调用它的方法。,getMessage,(),方法,用来得到有关异常事件的信息,printStackTrace,(),用来跟踪异常事件发生时执行堆栈的内容。,捕获违例,finally,捕获例外的最后一步是通过,finally,语句为例外处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在,try,代码块中是否发生了异常事件,,finally,块中的语句都会被执行。,finally,语句是任选的,IOException,违例处理举例(1),import,java.io,.*;,public class Test12_3,public static void main(String,args,),FileInputStream,in=new,FileInputStream(myfile.txt,);,int,b;,b=in.read();,while(b!=-1),System.out.print(char)b);,b=in.read();,in.close();,IOException,违例处理举例(2),程序,Test12_3,编译结果:,E:ex,javac,Test12_3.java,E:exTest12_3.java:4:,未报告的异常,java.io.FileNotFoundException,;,必须被捕获或被声明抛出,FileInputStream,in=new,FileInputStream(myfile.txt,);,E:exTest12_3.java:6:,未报告的异常,java.io.IOException,;,必须被捕获或被声明抛出,b=in.read();,E:exTest12_3.java:9:,未报告的异常,java.io.IOException,;,必须被捕获或被声明抛出,b=in.read();,E:exTest12_3.java:11:,未报告的异常,java.io.IOException,;,必须被捕获或被声明抛出,in.close();,4,个错误,IOException,违例处理举例(3),import,java.io,.*;,public class Test12_4,public static void main(String,args,),try,FileInputStream,in=new,FileInputStream(myfile.txt,);,int,b;b=in.read();,while(b!=-1),System.out.print(char)b);,b=in.read();,in.close();,catch(,IOException,e),System.out.println(e,);,finally,System.out.println,(Its ok!);,EX1,捕获和处理违例,编译、运行应用程序,Test12_3.java/Test12_4,,,体会,java,语言中违例的捕捉和处理机制。,相关知识:,FileInputStream,类的成员方法,read(),的功能是每次从相应的(本地为,ASCII,码编码格式)文件中读取一个字节,并转换成0255之间的,int,型整数返回,到达文件末尾时则返回-1。,声明抛弃违例,声明抛弃违例是,Java,中处理违例的第二种方式,如果一个方法(中的语句执行时,),可能生成某种违例,但是并不能确定如何处理这种违例,则此方法应声明抛弃违例,表明该方法将不对这些违例进行处理,而由该方法的调用者负责处理,声明抛弃举例:,public void,readFile(String,file)throws,FileNotFoundException,/,读文件的操作可能产生,FileNotFoundException,类型的违例,FileInputStream,fis,=new,FileInputStream(file,);,.,声明抛弃违例举例,import,java.io,.*;,public class Test12_5,public static void main(String,args,),Test12_5 t=new Test12_5();,try,t.readFile,();,catch(IOException,e)System.out.println(e,);,public void,readFile(),throws,IOException,FileInputStream,in=new,FileInputStream(myfile.txt,);,int,b;b=in.read();,while(b!=-1),System.out.print(char)b);,b=in.read();,in.close();,重写方法声明抛弃违例原则,重写方法不能抛出比被重写方法范围更大的违例类型,public class A,public void,methodA,()throws,IOException,public class B1 extends,TestA,public void,methodA,()throws,FileNotFoundException,public class B2 extends,TestA,public void,methodA,()throws Exception,抛弃例外,Java,异常类对象除在程序执行过程中出现异常时由系统自动生成并抛出,也可根据需要需要人工创建并抛出,首先要生成例外对象,然后通过,throw,语句实现抛出操作(提交给,Java,运行环境)。,IOException,e=new,IOException,();,throw e;,可以抛弃的例外必须是,Throwable,或其子类的实例。下面的语句在编译时将会产生语法错误:,throw new String(want to throw);,创建用户自定义例外类,用户自定义例外类,MyException,,,用于描述数据取值范围错误信息:,class,MyException,extends Exception,private,int,idnumber,;,public,MyException(String,message,int,id),super(message);,this.idnumber,=id;,public,int,getId,(),return,idnumber,;,使用用户自定义例外类,public class Test12_6,public void,regist(int,num)throws,MyException,if(num 0),throw new,MyException,(,人数为负值,不合理,3);,System.out.println,(,登记人数+,num);,public void manager(),try,regist(100);,catch(,MyException,e),System.out.print(,登记失败,出错种类+,e.getId,();,System.out.print(,本次登记操作结束);,public static void main(String,args,),Test12_6 t=new Test12_6();,t.manager();,Ex2,抛出例外声明,编写应用程序,练习,P19,页类的定义,体会其中的方法重写时对声明抛出例外方面的限制原则;,编写应用程序,改造并测试,P22、23,页创建和使用用户自定义例外的例子,加深理解;,(也可以只分析、体会编程思路。),
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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