第5章 异常处理综述_第1页
第5章 异常处理综述_第2页
第5章 异常处理综述_第3页
第5章 异常处理综述_第4页
第5章 异常处理综述_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、上海大学上海大学CIMS和机器人中心和机器人中心Java在工程中的应用在工程中的应用 本科生课程:本科生课程:09326080刘丽兰2022年7月8日姓姓 名:名: 刘丽兰刘丽兰学科专业:学科专业: 机械制造及自动化机械制造及自动化联系电话:联系电话: 56331763EMail: 上海大学机电工程与自动化学院上海大学机电工程与自动化学院2022年年7月月8日日2上海大学上海大学CIMS和机器人中心和机器人中心第第8周周3上海大学上海大学CIMS和机器人中心和机器人中心回顾回顾1.类的多态性类的多态性 重载和覆盖重载和覆盖2. 抽象类和最终类抽象类和最终类public abstract cla

2、ss ClosedFigure public abstract double area(); public abstract double perimeter();3. 接口、内部类接口、内部类public interface Area public abstract double area(); 4上海大学上海大学CIMS和机器人中心和机器人中心第第5章章 异常处理异常处理5.1 程序错误与处理程序错误与处理5.2 Java的异常处理的异常处理5上海大学上海大学CIMS和机器人中心和机器人中心1. 异常的概念:异常的概念: 在进行程序设计时,错误的产生是不可避免的,如何在进行程序设计时,错误

3、的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何从错误处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?这是任何程序设计语言都要解决的问题。中恢复?这是任何程序设计语言都要解决的问题。 所谓错误,是在程序运行过程中发生的异常事件,所谓错误,是在程序运行过程中发生的异常事件,比如除比如除0溢出、数组越界、文件找不到等,这些事件的溢出、数组越界、文件找不到等,这些事件的发生将阻止程序的正常运行。为了加强程序的鲁棒性发生将阻止程序的正常运行。为了加强程序的鲁棒性,程序设计时,必须考虑到可能发生的异常事件并做出相程序设计时,必须考虑到可能发生的异常事件并做出相应的处理。应的处理

4、。5.1 程序错误与处理程序错误与处理6上海大学上海大学CIMS和机器人中心和机器人中心什么情况下使用异常处理机制?什么情况下使用异常处理机制?p 当方法因为自身无法控制的原因而不能完成其任务当方法因为自身无法控制的原因而不能完成其任务p 文件不存在,网络连接无法建立文件不存在,网络连接无法建立p 处理在方法、类库、类中抛出的例外处理在方法、类库、类中抛出的例外p 如如FileInputStream.read产生产生IOExceptionp 在大的项目中采用统一的方式处理错误时在大的项目中采用统一的方式处理错误时p 如编写一个文字处理器如编写一个文字处理器p 异常应该是不经常发生但却可能发生的

5、故障异常应该是不经常发生但却可能发生的故障p 一定发生的事件不应该用异常机制来处理一定发生的事件不应该用异常机制来处理p 异常处理用于使系统从故障中恢复异常处理用于使系统从故障中恢复p 提示信息提示信息/不产生无效的结果不产生无效的结果/释放资源释放资源5.1 程序错误与处理程序错误与处理7上海大学上海大学CIMS和机器人中心和机器人中心2. 异常处理机制的优点:异常处理机制的优点:p 从从语法语法上看,异常处理语句将程序正常代码与错误处理代上看,异常处理语句将程序正常代码与错误处理代码分开,使程序结构清晰,算法重点突出,可读性强。码分开,使程序结构清晰,算法重点突出,可读性强。p 从从运行效

6、果运行效果看,异常处理语句使程序具有处理错误的能力。看,异常处理语句使程序具有处理错误的能力。即使发生了运行错,应用程序能够捕获异常并即使处理异即使发生了运行错,应用程序能够捕获异常并即使处理异常,使程序从运行错误中很好地恢复并继续运行,而不会常,使程序从运行错误中很好地恢复并继续运行,而不会导致程序运行非正常终止。导致程序运行非正常终止。 异常处理是捕获和处理运行时错误的一种机制异常处理是捕获和处理运行时错误的一种机制5.1 程序错误与处理程序错误与处理8上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理3. Java的错误和异常的错误和异常 错误与异常错误

7、与异常按照错误性质,按照错误性质,Java将运行时错误分为:错误和异常。将运行时错误分为:错误和异常。 错误(错误(error)指程序运行时遇到的硬件或操作系统的)指程序运行时遇到的硬件或操作系统的错误,如:内存溢出、虚拟机错误等。错误,如:内存溢出、虚拟机错误等。错误对程序而言是错误对程序而言是致命性致命性的,的, 错误将导致程序无法运错误将导致程序无法运行,程序本身不能处理错误。行,程序本身不能处理错误。 异常(异常(exception)指在硬件和操作系统正常时,程序)指在硬件和操作系统正常时,程序遇到的运行错。如:除数为遇到的运行错。如:除数为0、数组越界等。、数组越界等。异常对于程序而

8、言异常对于程序而言是非致命性是非致命性的,虽然异常会导致程的,虽然异常会导致程序非正常终止,但序非正常终止,但Java的异常处理机制使程序自身能的异常处理机制使程序自身能够捕获和处理异常,使程序仍可继续运行。够捕获和处理异常,使程序仍可继续运行。9上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理3. Java的错误和异常的错误和异常编译程序非正常终止运行有语法错?有 Java程序修改运行出现运行时错误?错误程序运行正常结束有没有没有异常程序非正常终止运行事先处理避免异常事后处理异常处理修改Java程序发现程序发现错误和异常:错误和异常: 10上海大学上海大学

9、CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理3. Java的错误和异常的错误和异常 错误类和异常类错误类和异常类 Error类类由由Java虚拟机生成并抛出给系统,有内存溢出错误、虚拟机生成并抛出给系统,有内存溢出错误、动态链接错误等。动态链接错误等。 Exception异常类异常类是是Java程序捕获和处理的对象。异常对象中包含错误程序捕获和处理的对象。异常对象中包含错误的位置和特征信息。的位置和特征信息。除数为除数为0的算术异常、数组下标越界异常、空指针异的算术异常、数组下标越界异常、空指针异常等。常等。11上海大学上海大学CIMS和机器人中心和机器人中心5.1 程

10、序错误与处理程序错误与处理3. Java的错误和异常的错误和异常 程序对错误与异常的三种处理方式程序对错误与异常的三种处理方式 程序不能处理错误程序不能处理错误由系统处理,由系统处理,Java程序本身不能对错误进行处理。程序本身不能对错误进行处理。 程序应避免而不捕获的异常程序应避免而不捕获的异常程序程序能够预见能够预见的异常,如除数为的异常,如除数为0、数组下标越界等,、数组下标越界等,程序应该考虑周全进行事先处理,尽量避免发生异常。程序应该考虑周全进行事先处理,尽量避免发生异常。 必须捕获的异常必须捕获的异常程序程序无法预见无法预见的、由特殊环境错误造成的异常,如:的、由特殊环境错误造成的

11、异常,如:文件未找到、网络通信失败等,必须进行捕获和处理。文件未找到、网络通信失败等,必须进行捕获和处理。12上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理错误类和异常错误类和异常类层次结构:类层次结构:13上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理3. Java的错误和异常的错误和异常例:例:P152,【例【例5.2】 发现数组下标越界的语义错。发现数组下标越界的语义错。public class Outofbounds public static void main(String args) int a=1,2,

12、3,4;for(int i=0;i5;i+)System.out.println(“ a ”+i+ “=”+ai);结果:结果:Exception in thread “main” java.lang.ArrayIndexOutOfBounds Exception:4 at Outofbounds.main(Outofbounds.java:7)14上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的的异常处理异常处理Java的异常处理机制包括:的异常处理机制包括: 异常类体系异常类体系 异常处理的异常处理的try语句语句 抛出自定义异常对象的抛出自定义异常对象的throw语句语

13、句 声明方法抛出异常的声明方法抛出异常的throws子句子句15上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的的异常处理异常处理1. 异常类说明异常类说明1. Exception异常类异常类Exception类的父类类的父类Throwable部分声明:部分声明:public class Throwable implements Serializable private String detailMessage; /异常信息描述异常信息描述 public Throwable() public Throwable(String message) public String ge

14、tMessage() /获得异常信息获得异常信息 public String toString() /获得异常对象的描述信息获得异常对象的描述信息 public void printStackTrace() /显示异常栈跟踪信息显示异常栈跟踪信息16上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的的异常处理异常处理1. 异常类说明异常类说明1. Exception异常类异常类异常类异常类Exception类只声明了若干构造方法:类只声明了若干构造方法:public class Exception extends Throwable public Exception() pub

15、lic Exception(String s)从父类从父类Throwable中继承了成员变量和成员方法。中继承了成员变量和成员方法。17上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理4. RuntimeException 异常类说明异常类说明Java异常类主要分为运行异常和非运行异常。运行异常由程异常类主要分为运行异常和非运行异常。运行异常由程序本身错误引发的异常,可以避免。序本身错误引发的异常,可以避免。 算术异常算术异常ArithmeticException:除数为:除数为0 空对象异常空对象异常NullPointerExceptionint a =

16、null;a0 = 1; /对空数组中的元素进行操作,产生空对对空数组中的元素进行操作,产生空对象异常象异常 类型强制转换异常类型强制转换异常ClassCastExceptionObject obj = new Object();String str = (String) obj;18上海大学上海大学CIMS和机器人中心和机器人中心5.1 程序错误与处理程序错误与处理4. RuntimeException 异常类说明异常类说明 负数组长度异常负数组长度异常NegativeArraySizeExceptionint a = new int -1;/产生负数组长度异常产生负数组长度异常 数组下标越

17、界异常数组下标越界异常ArrayIndexOutOfBoundsExceptionint a = new int1;a1 = 1;/产生数组下标越界异常产生数组下标越界异常 数值格式异常数值格式异常NumberFormatException将字符串转换成整数时有可能发生。将字符串转换成整数时有可能发生。int i=Integer.parseInt(“123”); /正确,不产生异常正确,不产生异常int j = Integer.parseInt(abc); /产生数值格式异常产生数值格式异常19上海大学上海大学CIMS和机器人中心和机器人中心异常处理机制的关键字:异常处理机制的关键字:p tr

18、y p 定义可能产生异常的代码段定义可能产生异常的代码段p catch (Etype e) p 用于捕获一个异常用于捕获一个异常p finally p 用于做统一的事后处理,如释放资源用于做统一的事后处理,如释放资源p throw e;p 用于抛出一个异常用于抛出一个异常p throws Etype1, Etype2 p 用于声明方法可能抛出的异常类型用于声明方法可能抛出的异常类型throw / throwstry-catch-finally5.2 Java的异常处理措施的异常处理措施20上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的异常处理措施的异常处理措施1. 异常处理

19、语句异常处理语句 异常处理语句语法:异常处理语句语法:try-catch-finallytry 语句语句1 /存在潜在异常的代码存在潜在异常的代码catch (异常类异常类 异常对象异常对象) 语句语句2 /捕获到异常并进行处理的代码捕获到异常并进行处理的代码finally 语句语句3 /最后必须执行的代码,无论是否捕获到异常最后必须执行的代码,无论是否捕获到异常try、catch、finally为关键字。为关键字。catch子句可以有一个或多个,但至少子句可以有一个或多个,但至少要有一个要有一个catch子句,子句,finally子句可以省略。子句可以省略。21上海大学上海大学CIMS和机器

20、人中心和机器人中心5.2 Java的异常处理措施的异常处理措施举例:举例:String str=“123”;try int i = Integer.parseInt (str);/调用声明抛出异常的方法调用声明抛出异常的方法Catch (NumberFormatException e) /捕获捕获parseInt()方法声明的异常对象方法声明的异常对象 System.out.println (str+ “字符串不能转换为整数字符串不能转换为整数”);Catch (Exception e) /捕获所有异常对象捕获所有异常对象 e.printStackTrace();/显示异常栈跟踪信息显示异常栈

21、跟踪信息22上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的异常处理措施的异常处理措施1. 异常处理语句异常处理语句出 现 运 行 时 错 误 , Java抛 出 异 常 ,中 断 执 行 语 句 序 列没 有 运 行 时 错误 , 没 有 产 生异 常 try 语 句 1 catch (捕 获 异 常 对 象 ) 异 常 处 理 finally 语 句 3 是异 常 处 理 后 程 序 停 止 运 行 catch捕 获 异 常 对 象 ?否异常处理语句的执行流程异常处理语句的执行流程多个多个catch语句需按异语句需按异常类从子类到父类的常类从子类到父类的次序依次排列。次序

22、依次排列。23上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的异常处理措施的异常处理措施public class Try2 public static void main (String args) int i=0; int a=5,6,7,8; for (i=0;i5;i+) try System.out.print(“a”+i+ “/”+i+ “=”+(ai/i);catch (ArrayIndexOutofBoundsException e) System.out.print(“捕获数组下标越界异常!捕获数组下标越界异常!”);catch(ArithmeticExcep

23、tion e) System.out.print(“捕获算术异常!捕获算术异常!”); catch(Exception e) System.out.print(“捕获捕获”+e.getMessage()+ “异常!异常!”);finally System.out.println(“ i=”+i);System.out.println(“继续!继续!”);程序运行结果:程序运行结果:捕获算术异常!捕获算术异常! i0a1/1=6 i=1a2/2=3 i=2a3/3=2 i=3捕获数组下标越界异常!捕获数组下标越界异常! i4继续!继续!24上海大学上海大学CIMS和机器人中心和机器人中心publ

24、ic class ExceptionDemo public static void main(String args) try FileInputStream fis = new FileInputStream(test1.txt); int b; while( (b=fis.read()!=-1 ) System.out.print(b); fis.close(); catch(IOException e) catch(FileNotFoundException e) /永远不会被执行永远不会被执行25上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的异常处理措施的异常处理措

25、施2. 抛出异常抛出异常 throw 异常对象异常对象 throw是关键字,是关键字,是程序创建的指定异常是程序创建的指定异常类对象。类对象。 由由throw语句抛出的异常也必须由语句抛出的异常也必须由try语句捕获并处理。语句捕获并处理。26上海大学上海大学CIMS和机器人中心和机器人中心5.2 Java的异常处理措施的异常处理措施2. 抛出异常抛出异常例:例:public void set(int age) if (age0 & age0 & age45) this.age = age; else throw new Exception(IllegalAgeData:“+age); /抛出异常抛出异常 catch (Exception e) System.out.println(e.toString(); 27上海大学上海大学CIMS和机器

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论