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