首页 javaCP7异常处理

javaCP7异常处理

举报
开通vip

javaCP7异常处理第七章异常处理Java程序设计本章主要内容异常的概念处理异常自定义异常小结2021/2/16李飞——计算中心2/22异常的概念凡是在运行时进入的不正常状态都称为错误。这些错误根据错误的严重性可以分为两类:一类是致命性的错误,它们的出现可能会导致系统崩溃,并且程序员并不能编写程序解决所出现的问题;另一类是普通级的错误,这类错误如果不加控制就会使程序非正常中断,但如果编写代码来处理的话,就有可能避免中断程序的执行。这类错误就为异常(Exception),就是指程序中出现的问题或不常见的情形。2021/2/16李飞——东...

javaCP7异常处理
第七章异常处理Java程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 本章主要内容异常的概念处理异常自定义异常小结2021/2/16李飞——计算中心2/22异常的概念凡是在运行时进入的不正常状态都称为错误。这些错误根据错误的严重性可以分为两类:一类是致命性的错误,它们的出现可能会导致系统崩溃,并且程序员并不能编写程序解决所出现的问题;另一类是普通级的错误,这类错误如果不加控制就会使程序非正常中断,但如果编写代码来处理的话,就有可能避免中断程序的执行。这类错误就为异常(Exception),就是指程序中出现的问题或不常见的情形。2021/2/16李飞——东北大学秦皇岛分校计算中心3/22程序中错误的类型语法错误语法错误是由于程序员编写的代码存在语法问题,导致源代码在编译成为字节码过程中产生的错,它由Java语言的编译系统负责监测和报告。运行错误运行错误是在程序执行过程中产生的错误,只有在程序运行时才能发现。这类错误如被0除,数组下标越界,声明了变量或对象引用却不使用等。逻辑错误由于循环条件或选择条件没有写正确导致的错误或由于涉及的程序逻辑有问题而导致的错误。对于这类错误,Java语言的编译系统无法处理,Java也没有相应的处理措施。2021/2/16李飞——东北大学秦皇岛分校计算中心4/22JDK中异常类的结构2021/2/16李飞——东北大学秦皇岛分校计算中心5/22Exception类在Java中,有些异常是Java编译器要求必须处理的,JDK把这些异常的特征和一些通用的处理方法定义成了Exception类及其子类。当程序编译过程中一旦检测出有可能发生这些异常情况,Java的编译系统会自动生成相应的异常类的实例对象,并要求应用程序来处理,如果应用程序中没有它们的处理程序,系统则编译失败并报告异常产生的信息。2021/2/16李飞——东北大学秦皇岛分校计算中心6/22常见的Exception类的子类子类名说明AWTException图形界面组件异常。ClassNotFoundException指定类或接口不存在异常。DataFormatException数据格式异常。FontFormatException字体格式异常。IllegalAccessException非法访问异常,如试图访问非公有方法。InstantiationException实例化异常,如实例化抽象类。InterruptedException中断异常。IOException输入输出异常。NoSuchFieldException找不到指定的字段异常。NoSuchMethodException找不到指定方法异常。PrintException打印机错误报告异常。RuntimeException运行时异常。SQLExceptionSQL语句执行错误异常。TimeoutException线程阻塞超时异常。TransformException执行转换算法异常。2021/2/16李飞——东北大学秦皇岛分校计算中心7/22常见的RuntimeException类的子类子类名说明ArithmeticException除数为0异常。ArrayIndexOutOfBoundsException访问数组下标越界异常。CalssCaseException类强制转换异常。IllegealArgumentException非法 参数 转速和进给参数表a氧化沟运行参数高温蒸汽处理医疗废物pid参数自整定算法口腔医院集中消毒供应 异常。IllegalStateException非法或不适当的时间调用方法异常。IndexOutOfBoundsException下标越界异常。MissingResourceException找不到资源异常。NagativeArraySizeException数组长度为负数异常。NullPointerException空指针异常。NumberFormatException数值格式异常。ArrayStoreException由于数组空间不够引起的数组存储异常。EventException事件异常,如果事件的类型不是在调用该方法之前通过初始化该事件指定的事件时抛出。2021/2/16李飞——东北大学秦皇岛分校计算中心8/227.2处理异常在Java中异常被定义为一类对象。当执行程序中的方法发生错误时,Java会根据错误的类型创建一个异常对象并交给运行时系统。抛出异常:我们把创建异常对象并将它交给运行时系统的过程称为抛出异常。捕获异常:我们把选择合适的异常处理方法并将异常传递给它的过程称为异常的捕获异常处理:把执行异常处理程序的过程叫异常的处理。2021/2/16李飞——东北大学秦皇岛分校计算中心9/22异常处理的语句try{可能产生异常的语句;}catch(要捕获的异常类名异常对象名){异常处理程序;}……finally{一定会运行的程序;}2021/2/16李飞——东北大学秦皇岛分校计算中心10/221.try程序块中在运行时产生异常时,程序运行中断,并抛出相应的异常对象。2.抛出的异常对象如果属于catch括号中要捕获的异常类,则catch会捕获此异常,且为该异常创建一个引用名,然后执行catch程序块中的异常处理程序。其中“……”表示多个catch程序块,每个catch程序块捕获一种异常。3.无论try程序块是否捕获到异常,或者捕获到的异常是否与catch()括号内的异常类型相同,最后一定会运行finally块里的程序代码。4.finally块运行结束后,程序继续运行try-catch-finally块后面的代码。例7.1:异常处理举例importjava.util.Scanner;publicclasseg7_1{publicstaticvoidmain(String[]args){inta=0,b,c=0;Scanners=newScanner(System.in);try{a=9;b=s.nextInt();c=a/b;}catch(ArithmeticExceptione){System.out.println("请输入非0值");b=1;c=a/b;}System.out.println("你好,异常处理完毕!");System.out.println(c);}}2021/2/16李飞——东北大学秦皇岛分校计算中心11/22异常捕获策略尽可能只捕获指定的异常,而不是捕获多个异常的公共父类,除非确信这个异常的所有子类对程序来说是没有差别的,可以同样的方式来处理它们,同时也要考虑该异常将来可能的扩展。只要有可能,就不要捕获java.lang.Exception或java.lang.Throwable。如果有多个指定的异常需要处理,可以多写几个catch代码块,或者捕获多个异常的公共父类,只要不是java.lang.Exception或java.lang.Throwable就行。一般情况下不要捕获RuntimeException或Error,除非这些异常并不代表程序或系统的错误。让这些标志着程序或系统的异常沿着调用栈,一直传递到最上层的严重错误处理程序中。重构代码时,仔细观察因为代码的改变而变得多余的catch代码块。因为编译器并不是总能发现这类问题。2021/2/16李飞——东北大学秦皇岛分校计算中心12/22异常的抛出在Java中,一旦软件运行过程出现异常,我们有三种方法来处理它。在发生异常的同时,通过try-catch-finally语句直接处理,这种处理方法被称为程序内部处理;另一种是程序员不对方法程序中产生的异常编写处理程序,仅仅在可能出现异常的方法的方法声明部分添加一个抛出异常的关键字说明这些异常由系统来处理。还有一种是结合系统处理和程序员编程两种方式处理异常。2021/2/16李飞——东北大学秦皇岛分校计算中心13/22异常的抛出throws子句要想把方法运行过程中的异常抛出给系统,需要在方法声明中添加throws子句。其方法声明的具体格式如下。一般的,如果一个方法引发了一个异常,而它自己又不处理,就要由其调用方法进行处理。在子类中一个重写的方法可能只抛出父类中声明过的异常或其子类。如果一个方法有完全相同的名称和参数,它只能抛出父类中声明过得异常或者异常的子类。Eg7.32021/2/16李飞——东北大学秦皇岛分校计算中心14/22访问权限修饰符返回值类型方法名(参数列表)throws异常列表异常的抛出用throw保留字主动抛出异常Java是通过异常抛出语句来实现主动抛出异常功能的。其语句格式是throw异常对象;Eg7.42021/2/16李飞——东北大学秦皇岛分校计算中心15/22在使用throw语句抛出异常时需要注意的问题Throwable类的子类所创建的实例对象都可以用throw语句抛出。出异常是为了表明程序遇到错误无法正常执行而需要异常处理。抛出异常的throw语句可以在try代码段中,也可以在try代码段中调用的方法中抛出异常。异常抛出后,它后面的代码将不再执行,也可以说异常地抛出终止了代码段的正常执行。2021/2/16李飞——东北大学秦皇岛分校计算中心16/22异常抛出策略从方法使用者的角度,而不是书写该方法的开发者角度来考虑,声明对使用者有意义的异常。何时抛出异常——在所设计的方法遇到不能处理的非正常情形下,应当声明抛出异常。不声明所有可能发生的异常,要尽可能的将“低级异常”映射成对使用者有意义的高级异常。不要声明抛出“Exception”或“Throwable”,因为声明抛出“超级异常”对方法使用者来说是毫无用处的,而且会导致极差的代码风格。一般不声明抛出超过3个的异常,如果发生这种情况,也要通过代码重构或将多个异常映射到一个通用异常中来解决该问题,或者在方法内部自行消化部分内部异常。将异常组织成一个对象树结构,有利于保持方法定义的稳定性,同时也给方法的使用者提供了以不同粒度处理异常的自由。2021/2/16李飞——东北大学秦皇岛分校计算中心17/227.3自定义异常我们可以通过从Exception类或者它的子类派生一个子类,作为我们自定义的异常类。在程序运行时,发生了类似的问题时,程序员可以通过throw语句抛出自定义的异常类的实例,将其放到异常处理的队列中,并激活Java的异常处理机制。2021/2/16李飞——东北大学秦皇岛分校计算中心18/22例7.5自定义异常描述不可以输入负数成绩。importjava.util.Scanner;classmyExceptionextendsException{publicmyException(Stringmsg){super(msg);}}publicclasseg7_5{publicstaticvoidmain(String[]args){doublea;2021/2/16李飞——东北大学秦皇岛分校计算中心19/22try{a=inputScore();System.out.println(a);}catch(myExceptione){System.out.println(e.getMessage());}System.out.println("程序结束");}staticdoubleinputScore()throwsmyException{doublescore=0;Scanners=newScanner(System.in);System.out.println("请输入学生成绩!");score=s.nextDouble();if(score<0){thrownewmyException("不能传小于0的数");}returnscore;}}2021/2/16李飞——东北大学秦皇岛分校计算中心20/22小结异常处理机制包括:抛出异常,捕捉异常。Java中抛出异常的语句为:throw异常对象;忽略异常的子句必须和方法声明写在一起,语句格式为:捕获并处理异常的语句为:2021/2/16李飞——东北大学秦皇岛分校计算中心21/22访问权限修饰符返回值类型方法名(参数列表)throws异常列表try{可能产生异常的语句;}catch(要捕获的异常类名异常对象名){异常处理程序;}……finally{一定会运行的程序;}2021/2/16李飞——计算中心22/22感谢谢谢,精品 课件 超市陈列培训课件免费下载搭石ppt课件免费下载公安保密教育课件下载病媒生物防治课件 可下载高中数学必修四课件打包下载 资料搜集
本文档为【javaCP7异常处理】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
知识大咖
工程测量教师
格式:ppt
大小:777KB
软件:PowerPoint
页数:24
分类:
上传时间:2021-11-23
浏览量:0