异常处理机制.ppt

上传人:sccc 文档编号:5619437 上传时间:2023-08-03 格式:PPT 页数:25 大小:175.04KB
返回 下载 相关 举报
异常处理机制.ppt_第1页
第1页 / 共25页
异常处理机制.ppt_第2页
第2页 / 共25页
异常处理机制.ppt_第3页
第3页 / 共25页
异常处理机制.ppt_第4页
第4页 / 共25页
异常处理机制.ppt_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《异常处理机制.ppt》由会员分享,可在线阅读,更多相关《异常处理机制.ppt(25页珍藏版)》请在三一办公上搜索。

1、异常处理机制,例外处理机制,2,主要内容,引入异常机制Java的异常处理异常的抛出、捕获与处理自定义异常使用finally,例外处理机制,3,对错误的处理,程序执行的错误处理错误向用户通知错误保存全部工作让用户适当地退出程序异常处理JAVA检测和报告错误的机制,例外处理机制,4,处理错误的方式,函数式编程中,直接检测调用函数返回值以确定错误内容,存在的问题检测错误返回的编码工作量大,逻辑上复杂返回的错误信息有限,无详细的位置、性质等异常处理throws,使不能正常结束的方法抛出一个封装了错误信息的对象异常使用异常处理程序处理异常错误,例外处理机制,5,异常处理机制,Java中定义了很多异常类,

2、每个异常类都代表了一种运行错误,类中包含了该运行错误的信息和处理错误的方法等内容。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。这就是Java的异常处理机制,例外处理机制,6,异常处理机制,当方法执行过程中出现错误而干扰了程序流程时,会抛出一个异常,即构造出一个异常类的对象。异常类对象代表当前出现的一个具体异常,该对象封装了异常的有关信息。异常分为系统定义异常和用

3、户自定义异常。异常抛出方式:自动抛出(系统定义异常)用throw语句抛出(用户定义异常)方法中的异常处理:捕获异常,就地解决,并使程序继续执行。将异常向外转移,即将异常抛出方法之外,由调用该方法的环境去处理。,例外处理机制,7,异常类,例外处理机制,8,异常类,Exception类定义的是较轻的错误,你可以编写代码来处理这类错误,并继续程序的执行。Exception原因:打开的文件不存在。网络连接中断。操作数超过允许范围。想要加载的类文件不存在。试图通过空的引用型变量访问对象。数组下标越界。Error类定义的错误是致命性错误,一般会导致程序停止执行。,例外处理机制,9,Exception类,构

4、造方法Exception()Exception(String 异常描述)Exception类的方法均继承自Throwable类方法String getMessage()返回异常描述。String toString()返回异常对象详细信息。void printStackTrace()打印异常发生的路径,即引起异常的方法调用嵌套序列。,例外处理机制,10,系统定义的异常类,ClassNotFoundException 未找到要加载的类ArrayIndexOutOfBoundsException 数组越界使用FileNotFoundException 未找到指定的文件或目录IOException 输

5、入、输出错误NullPointerException 引用空的尚无内存空间的对象,系统将常见错误予 定义为若干异常类 当出现异常时自动 抛出,例外处理机制,11,系统定义的异常类,ArithmeticException 算术错误,如除数为0InterruptedException 一线程在睡眠、等待或其他原因暂停时被其他线程打断UnknownHostException 无法确定主机的IP地址SecurityException 安全性错误,如Applet欲读写文件MalformedURLException URL格式错误,例外处理机制,12,用户定义的异常类,用户自定义异常主要用来处理用户程序中

6、特定的逻辑 运行错误。定义异常类 class MyExp extends Exception/或继承其他异常类/定义新的属性/重载构造方法 例:MyExp(String msg)super(msg)/重载原方法,或定义新方法 抛出异常类:throw 异常类对象;例:throw new MyExp(“年龄超过规定”);例:throw new Exception();,例外处理机制,13,异常的产生,自动抛出异常运行异常程序运行中可自动由Java解释器引发并处理的异常;编程时不需捕获或声明。如:除以0、下标越界、指针例外等非运行异常可在编译期由编译器确定某方法是否会发生此类异常;必须编程时捕获或声

7、明 如:IOException,InterruptedException,例外处理机制,14,异常的产生,编程抛出异常:在程序的相应部分抛出异常:throw new XXXException();throw new XXXException(String describe);例:String readData()throws EOFException.throw new EOFException(“error”);.,例外处理机制,15,警戒区:可能会引起异常的代码段 try 警戒区代码/抛出例外 catch(ExceptType e)/捕获例外 例外处理代码/异常处理 后续语句若try块中出

8、现异常,则控制转向下面的异常处理部 分,然后执行后续语句。若try块中没有异常,则try块执行完,控制转向后续 语句。,异常处理,例外处理机制,16,多个异常的处理,可用一组并列的catch块处理多异常情况try.catch(异常类1 e1).catch(异常类2 e2).匹配规则:抛出对象与catch参数类型相同抛出对象为catch参数类的子类按先后顺序捕获(注意catch块书写时的排列顺序:先具体、后一般),但只捕获一次。,例外处理机制,17,异常处理过程,当遇到关键字 throw 时就抛出一个异常将控制转移到相关的 catch 块中处理之如果产生异常的方法本身没有相应catch 语句块,

9、则应有throws语句声明例外退出当前方法并转向上一级调用此方法的方法的 catch 语句块若始终没有catch块来处理则由运行系统处理,例外处理机制,18,例,例:ExceptionMethods.java 抛出捕获处理异常的各方法,例外处理机制,19,public class ExceptionMethods public static void main(String args)try/抛出例外 throw new Exception(Heres my Exception);catch(Exception e)/捕获例外/处理例外 System.out.println(Caught Ex

10、ception);System.out.println(e.getMessage():+e.getMessage();System.out.println(e.toString():+e.toString();System.out.println(e.printStackTrace():);e.printStackTrace();/end of main()/end of class,例外处理机制,20,自定义异常类,声明一个新的异常类,该异常类必须从Java已有定义的异常类继承,如Exception、IOException等为新的异常类定义属性和方法,或重载父类的属性和方法,使这些属性和方法

11、能够体现该类所对应的错误的信息。例:Inheriting.java,例外处理机制,21,class MyException extends Exception/自定义例外 public MyException()public MyException(String msg)super(msg);public class Inheriting public static void f()throws MyException System.out.println(Throwing MyException from f();throw new MyException();/抛出自定义例外 public

12、 static void main(String args)try f();/处理自定义例外 catch(MyException e)e.printStackTrace();/end of main()/end of class Inheriting,例外处理机制,22,异常转移,异常总是发生在方法执行过程中。当异常不处理时会向方法外转移。系统定义的异常自动向外转移。用户自定义的异常要转移需要在方法头声明一下 String readData()throws MyExp.throw new MyExp(“年龄超过规定”);,例外处理机制,23,finally,try.catch(A a).fin

13、allyfinally:不论是否有异常抛出,均执行只有当try块中执行System.exit()时,会立即结束程序。用处:一般用来进行一些“善后”操作,如系统资源的释放、文件的关闭等例:FinallyWorks.java,例外处理机制,24,public class FinallyWorks static int count=0;public static void main(String args)while(true)try/count is zero first time:if(count+=0)throw new Exception();System.out.println(No exception);catch(Exception e)System.out.println(Exception thrown);finally/是否抛出例外都会执行 System.out.println(in finally clause);if(count=2)break;/out of while/end of while/end of main()/end of class,例外处理机制,25,课后作业,P116.第10、11、12题,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号