文档介绍:Java语言与面向对象技术
Java异常和垃圾收集
第十一讲
回顾
目标
了解异常的定义
了解异常的分类
掌握 try、catch 和 finally 语句的用法
掌握throw、throws子句的用法
掌握如何定义自己的异常
了解 Java 的垃圾收集机制
什么是异常
运行时发生的错误称为异常(Exception)。
处理这些异常就称为异常处理。
一旦引发异常,程序将突然中止,且控制将返回操作系统。
发生异常后此前分配的所有资源都将保留在相同的状态,这将导致资源漏洞。
何时使用Java中异常?
1)如果是可以预料到的,通过简单的表达式修改就可以处理好的,就不必使用异常(如数组越界错误)
2)因为异常占用了JAVA程序的许多处理时间,简单的测试比处理异常的效率更高。所以,建议将异常用于你无法预料或无法控制的情况。(如打开远程文件,而Error异常就不必处理)
(Error的实例是JAVA运行时环境(JVM)中的内部错误,通常是致命的,对它们你无法做太多的工作)
3)花费时间处理异常可能会影响你的代码的执行速度,但在稍后的项目和在越来越大的程序中再次使用你的类时,这种额外的小心将会给你带来极大的回报。(当然JAVA类库是小心编写的,它已经足够强壮)
异常体系结构 2-1
所有异常类型都是
内置类Throwable的子类
用于Java运行时系统
来显示与运行时系
统本身有关的错误
用于用户程序可能
捕获的异常,也是用来创建用户异常类型子类的类。
Error类对象由Java虚拟机生成并抛出;
Exception类对象由应用程序处理或抛出。
异常体系结构 2-2
Java中的异常是实际的对象,是从类Throwable继承而来的派生类的实例。
Throwable类有两个子类:Error和Exception
Java 的 Exception 类实现了 Throwable 接口并提供一些有用的特性来处理异常,特别是为消息提供了管道,包含一个栈跟踪。
类Exception的子类分为两组:
1)运行时异常(类RuntimeException的子类)通常是因为代码不够强壮而发生。
各种运行时异常都继承 Exception 类,负责记录抛出的异常信息。
2)其它异常(例如:IOException)
常见异常及其用途 2-1
异常
说明
RuntimeException
ArithmeticException
算术错误,如除以 0
IllegalArgumentException
方法收到非法参数
ArrayIndexOutOfBoundsException
数组下标出界
NullPointerException
试图访问 null 对象引用
SecurityException
试图违反安全性
ClassNotFoundException
不能加载请求的类
常见的异常及其用途 2-2
异常
说明
AWTException
AWT 中的异常
IOException
I/O 异常的根类
FileNotFoundException
不能找到文件
EOFException
文件结束
essException
对类的访问被拒绝
NoSuchMethodException
请求的方法不存在
InterruptedException
线程中断
Java异常处理基础
Java异常处理机制采用一个统一和相对简单的抛出(throw)和处理错误的机制。如果一个方法本身能引发异常,当所调用的方法出现异常时,调用者可以捕获(catch)异常使之得到处理;也可以回避异常,这时异常将在调用的堆栈中向下传递,直到被处理。