09 java基础课程-异常1_第1页
09 java基础课程-异常1_第2页
09 java基础课程-异常1_第3页
09 java基础课程-异常1_第4页
09 java基础课程-异常1_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

异常 异常的定义 Java的异常处理机制 Java的异常体系 自定义异常在前面的课中,我们运行以下程序时:class T系统显示结果为:这里的 Exception就是我们要学习的异常现实生活中,我们去做某个事情的时候,可能会因为其它原因导致我们失败,比如说: 老张开车去东北,撞了。被撞是一个 意外 ,可能会发生,也可能不会发生,被撞后如何做呢?A 忍着可能失血过多而导致不可想象的后果B 去医院去医院采取 补救 措施后继续开车前进在程序运行的过程中,可能会因为外部不可预料的因素而导致某个方法的执行失败,那么失败后我们如何处理呢?A 容忍失败程序带着错误一直运行到底B 不容忍失败,而选择直接崩溃程序不健壮,没有用户愿意接受动不动死机的系统C 采用 Java的异常机制异常处理机制:try老王 .开车 ();catch(撞车 e)e.get车主 ().赔钱 ();医生 .抢救 (老王 );老王 .吃饭 ();我们将 可能 会出现意外情况的语句用try-catch语句包围起来,如果没有出现意外,程序正常执行,如果出现意外,程序进入 catch中的处理语句中catch(撞车 e)这里的 e是关于这次撞车事件的详细信息trycatch异常执行 catch 后程序继续正常运行程序控制引发代码块单 元 写出以下程序的输出结果class Tstatic void t()int a = 2/0;System.out.println(a);public static void main(String args)System.out.println(1);t();System.out.println(2); 写出以下程序的输出结果class Tstatic void t()int a = 2/0;print(0); static void print(int a) System.out.println(a);public static void main(String args)print(1); try t(); catch(Exception e) print(2); print(3); Java中的异常ExceptionArithmeticExceptionNullPointerExceptionObjectThrowableErrorThreadDeathSQLExceptionRuntimeExceptionNumberFormatExceptionAWTErrorThrowable 具有两个子类A. Exception:处理用户程序应当捕获的异常情况B. Error: Error 类的异常为内部严重错误,因此在这种情况下不期望用户的程序捕获它们异常 说明Exception 异常层次结构的根类RuntimeException 许多 java.lang 异常的基类ArithmeticException 算术错误情形,如以零作除数IllegalArgumentException 方法接收到非法参数ArrayIndexOutOfBoundsException 数组大小小于或大于实际的数组大小NullPointerException 尝试访问 null 对象成员ClassNotFoundException 不能加载所需的类NumberFormatException 数字转化格式异常IOException I/O 异常的根类FileNotFoundException 找不到文件EOFException 文件结束InterruptedException 线程中断常见异常类常见异常类 Exception类有一个特殊的子类RuntimeException, 我们称之为运行时异常。如果一个方法声明要抛出的异常类型是这个类或其子类,则该方法的调用者不必显示地使用 trycatch段来捕获,否则该方法的调用者一定要显示地处理该异常 一段代码可能会生成多个异常 当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个类型与异常类型匹配的语句 执行其中的一条 catch 语句之后,其他的 catch 语句将被忽略 try. catch(ArrayIndexOutOfBoundsException e) catch(Exception e) 使用多重 catch 语句时,异常子类一定要位于异常父类之前 try. catch(Exception e) catch(ArrayIndexOutOfBoundsException e) JavaAPI提供的内置异常不一定总能捕获程序中发生的所有错误。有时会需要创建用户自定义异常 自定义异常需要继承 Exception 或 其子类 ,并调用父类的构造方法初始化异常消息信息class T extends Exceptionpublic T(String message) super(message);也可以在构造方法中直接对异常信息进行初始化,但不推荐这样,public class 撞车 extends Exceptionpublic 撞车 ()super(“撞车了 ”);注:不管怎么,推荐在自定义的异常类中通过父类的构造方法来初始化异常消息 如果在一个方法中可能导致某个异常但不处理它,可以通过 throws声明这个方法有可能会发生某个异常,而把异常的处理交给该方法的调用者来处理。 如果在一个方法中,当程序在运行过程中符合某个条件时,我们在程序中可以主动地抛出一个异常,从而中断程序的正常执行流程,把执行流程交给异常处理机制来处理。 显示声明异常的语句public void test() throws XXXException 主动抛出异常的语句:throw new XXXExeption();语句 3throw 异常异常引发的异常引发的异常停止异常处理程序可执行程序语句语句 1语句 2class 司机 private String name;void 开车 () throws 撞车 if(1 = 1) /假设某个条件成立时表示撞车了throw new 撞车 (name);异常类型异常对象手动引发异常 指定由方法引发的异常tryfinally catchthrowsthrow要监控的程序语句包含在此块中以合理的方式捕获和处理异常释放资源等 如果存在这样的代码:无论 try代码块中的语句是否会产生异常,这段代码都希望被执行,我们可以把这样的代码放到 finally代码块中try 块块finally 块块catch

温馨提示

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

评论

0/150

提交评论