北大青鸟 c 第五章 异常和垃圾收集 Version 3.0 CHA
Version 3.0 异常和垃圾收集 第五章
回顾 类中的静态成员属于类。 fina修饰符可应用于类、方法和变量。 定义抽象类的目的是提供可由其子类共享 的一般形 ·接口就是需要由其他类实现的行为模板。 访问控制级别: public、 protected、缺省、 rivate 封装类就是封装基本数据类型的类 内部类指嵌入外部类内的类。 北大青鸟
2 回顾 • 类中的静态成员属于类。 • final 修饰符可应用于类、方法和变量。 • 定义抽象类的目的是提供可由其子类共享 的一般形式。 • 接口就是需要由其他类实现的行为模板。 • 访问控制级别:public、protected、缺省、 private • 封装类就是封装基本数据类型的类。 • 内部类指嵌入外部类内的类
目标 了解异常的定义 了解异常的分类 掌握ty、 catch和 finally语句的用法 掌握 throw、 throws子句的用法 掌握如何定义自己的异常 了解Java的垃圾收集机制 北大青鸟
3 目标 • 了解异常的定义 • 了解异常的分类 • 掌握 try、catch 和 finally 语句的用法 • 掌握throw、throws子句的用法 • 掌握如何定义自己的异常 • 了解 Java 的垃圾收集机制
什么是异常 运行时发生的错误称为异常。处理这些 异常就称为异常处理 旦引发异常,程序将突然中止,且控 制将返回操作系统。 发生异常后此前分配的所有资源都将保 留在相同的状态,这将导致资源漏洞。 北大青鸟
4 什么是异常 • 运行时发生的错误称为异常。处理这些 异常就称为异常处理。 • 一旦引发异常,程序将突然中止,且控 制将返回操作系统。 • 发生异常后此前分配的所有资源都将保 留在相同的状态,这将导致资源漏洞
Java异常处理基础 Java异常处理机制采用一个统一和相对简 单的抛出和处理错误的机制。如果一个方 法本身能引发异常,当所调用的方法出现 异常时,调用者可以捕获异常使之得到处 理;也可以回避异常,这时异常将在调用 的堆栈中向下传递,直到被处理。 北大青鸟
5 Java异常处理基础 • Java异常处理机制采用一个统一和相对简 单的抛出和处理错误的机制。如果一个方 法本身能引发异常,当所调用的方法出现 异常时,调用者可以捕获异常使之得到处 理;也可以回避异常,这时异常将在调用 的堆栈中向下传递,直到被处理
异常体系结构 所有异常类型都是 内置类 Throwable的 用于Java运行时系统 子类 来显示与运行时系 统本身有关的错误 用于用户程序可能 捕获的异常,也 Throwable 类型子类的类 Error Exception SQLException Runtime Exception A VTError ClassNotFoundException Thread Death ArithmeticException NullPointer Exception NumberF ormat Exception Err类对象由ava虚拟机生成并抛出 Exception类对象由应用程序处理或抛 出 北大青鸟
6 异常体系结构 所有异常类型都是 内置类Throwable的 用于Java运行时系统 子类 来显示与运行时系 统本身有关的错误 用于用户程序可能 捕获的异常,也是 用来创建用户异常 类型子类的类。 Error类对象由Java虚拟机生成并抛出; Exception类对象由应用程序处理或抛 出
常见异常及其用途21 异常 说明 RuntimeException ava. lang包中多数异常的基类 ArithmeticException 算术错误,如除以0 Illegalargumentexception 方法收到非法参数 ArraylndexoutofBounds Exception数组下标出界 NullPointerException 试图访问n叫l对象引用 SecurityException 试图违反安全性 ClassNotFoundException 不能加载请求的类 北大青鸟
7 常见异常及其用途 2-1 异常 说明 RuntimeException java.lang包中多数异常的基类 ArithmeticException 算术错误,如除以0 IllegalArgumentException 方法收到非法参数 ArrayIndexOutOfBoundsException 数组下标出界 NullPointerException 试图访问null 对象引用 SecurityException 试图违反安全性 ClassNotFoundException 不能加载请求的类
常见的异常及其用途22 异常 说明 AWTException AWT中的异常 IOException IO异常的根类 FileNotFoundException 不能找到文件 EOFException 文件结束 IllegalAccessexception 对类的访问被拒绝 NoSuchMethodException 请求的方法不存在 InterruptedException 线程中断 北大青鸟
8 常见的异常及其用途 2-2 异常 说明 AWTException AWT 中的异常 IOException I/O 异常的根类 FileNotFoundException 不能找到文件 EOFException 文件结束 IllegalAccessException 对类的访问被拒绝 NoSuchMethodException 请求的方法不存在 InterruptedException 线程中断
异常处理模型 ·由五个关鍵字ty、 catch、 throw、 throws 和fnay处理。 Java中可用于处理异常的两种方式: 自行处理:可能引发异常的语句封入在try 块内,而处理异常的相应语句则封入在 catch 块内。 回避异常:在方法声明中包含 throws子句 通知潜在调用者,如果发生了异常,必须由 调用者处理。 北大青鸟
9 异常处理模型 • 由五个关键字 try、catch、throw、throws 和 finally 处理。 • Java 中可用于处理异常的两种方式: –自行处理:可能引发异常的语句封入在 try 块内,而处理异常的相应语句则封入在 catch 块内。 –回避异常:在方法声明中包含 throws 子句, 通知潜在调用者,如果发生了异常,必须由 调用者处理
try- catch块示例 public class ExceptionDemo i public static void main(string args[I)t try i 调用函数 Calculate int c= calculate(9,0) System. out. println(c)i 将引发一个异常 catch (Exception e)( System. err. println("发生异常:"+e. tostring(); e. printstackfra≈aO 命令提示符 C: \java>java Exception Demo 发生异常:Java. langArithmetic Exception:/ by zer ava.lang Arithmetic Exception: by zer s七a七 ic int calcu1 at Exception Demo. calculate(Exception Der at Exception Demo.main(Exception d Java:5) 1L卫tc a/b; b 输出 结果 10 北大青鸟
10 try - catch 块示例 public class ExceptionDemo { public static void main(String args[]) { try { int c= calculate(9,0); System.out.println(c); } catch (Exception e) { System.err.println("发生异常: " + e.toString()); e.printStackTrace(); } } static int calculate(int a, int b) { int c = a/b; return c; } } 调用函数calculate, 将引发一个异常 在catch块中处 理异常 输出 结果