第05章 异常处理
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《Java2程序设计实用教程》叶核亚
5.5 自定义异常类
例5.6 自定义异常类.
class OverflowException extends Exception //自定义异常类 { public void printMsg() { System.out.println("exception: "+this.getMessage()); this.printStackTrace(); System.exit(0); } } public class Try7 { public void calc(byte k) throws OverflowException //抛出异常
5.1.1 错误与异常
致命性的错误:如果程序进入了死循环,或递归无法 结束,或内存溢出,这些现象称为错误 错误.错误只能在 错误 编程阶段解决,运行时程序本身无法解决,只能依靠 其它程序干预,否则会一直处于非正常状态. 非致命性的异常:如果运算时除数为0,或操作数超出 0 数据范围,或打开一个文件时发现文件不存在,或欲 装入的类文件丢失,或网络连接中断等,这些现象称 为异常 异常.在源程序中加入异常处理代码,当程序运行 异常 中出现异常时,由异常处理代码调整程序运行方向, 使程序仍可继续运行直至正常结束.
《Java2程序设计实用教程》叶核亚
1.异常的产生
例5.1 产生数组下标越界异常和除数为0异常.
public class Try1 { public static void main (String args[]) { int i=0; int a[] = {5,6,7,8}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.print("3/0="+(3/0)); } }
例5.5 抛出异常的方法与调用方 法处理异常.
public class Try6 { public void calc(byte k) throws Exception //抛出异常 { byte y=1,i=1; System.out.print(k+"!="); for (i=1;i〈=k;i++) { if(y>Byte.MAX_VALUE/i) throw new Exception("overflow"); else y = (byte)(y * i); } System.out.println(y); }
《Java2程序设计实用教程》叶核亚
5.1.2 异常处理机制
抛出异常:当程序发生异常时,产生一个异常事 异常事 异常对象,并把它提交给运行系 件,生成一个异常对象 异常对象 统,再由运行系统寻找相应的代码来处理异常. 这个过程称为抛出 抛出(throw)一个异常. 抛出 捕获异常:异常抛出后,运行时系统从生成对象 的代码开始,沿方法的调用栈逐层回溯查找, 直到找到包含相应处理的方法,并把异常对象 交给该方法为止,这个过程称为捕获 捕获(catch) 捕获 一个异常.
第5章 异常处理
5.1 5.2 5.3 5.4 5.5 Java异常处理的基础知识 异常类的产生,捕获与处理 异常的分类 抛出异常 自定义异常类
《Java2程序设计实用教程》叶核亚
5.1 Java异常处理的基础知识
5.1.1 错误与异常 5.1.2 异常处理机制
《Java2程序设计实用教程》叶核亚
程序设计实用教程》 《Java2程序设计实用教程》 程序设计实用教程
第1章 概述 章 第2章 Java语言基础 章 语言基础 第3章 面向对象技术 章 第4章 Java类和对象的高级特征 章 类和对象的高级特征 第5章 异常处理 章 第6章 图形界面设计 章 第7章 多线程机制 章 第8章 输入输出流 章 第9章 Applet应用程序 章 应用程序 第10章 网络通信 章 开发技术JSP 第11章 Web开发技术 章 开发技术 第12章 J2EE概论 章 概论
《Java2程序设计实用教程》叶核亚
2.抛出异常的方法与调用方法处理 异常
抛出异常的方法
[〈修饰符〉]〈返回值类型〉〈方法名〉 ([〈参数列表〉]) [ throws 〈异常类〉]
由调用方法处理异常
由一个方法抛出异常后,系统将异常向上传 递,由调用它的方法来处理这些异常.
《Java2程序设计实用教程》叶核亚
《Java2程序设计实用教程》叶核亚
�
《Jav出异常
1. 使用throw语句抛出异常
throw 〈异常对象〉 try { if(y>Byte.MAX_VALUE/i) //Integer类的常量表示最大值 throw new Exception("overflow"); //溢出时抛出异常 else y = (byte) (y * i); } catch(Exception e) { System.out.println("exception: "+e.getMessage()); e.printStackTrace(); //显示异常信息 System.exit(0); }
《Java2程序设计实用教程》叶核亚
3.由方法抛出异常交系统处理
import java.io.*; public class Try3 { public static void main (String args[]) throws IOException { FileInputStream fis = new FileInputStream("autoexec.bat"); } }
《Java2程序设计实用教程》叶核亚
2.使用try-catch-finally语句捕获和 处理异常
try { 〈语句1〉 } catch (ExceptionType1 e) { 〈语句2〉 } finally { 〈语句3〉 }
《Java2程序设计实用教程》叶核亚
例5.2 异常的捕获和处理.
public class Try2 { public static void main (String args[]) { int i=0; int a[] = {5,6,7,8}; for(i=0;i<5;i++) { try { System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e) { System.out.print("捕获数组下标越界异常!");
《Java2程序设计实用教程》叶核亚
异常处理的类层次
Object Throwable
Error 错误类
Exception 异常类
图5.1 异常类层次结构
《Java2程序设计实用教程》叶核亚
5.2 异常类的产生,捕获与处理
1.异常的产生 2.使用try-catch-finally语句捕获和处理异 常
《Java2程序设计实用教程》叶核亚
5.3 异常的分类
程序不能处理的错误,Error类为错误类, 如内存溢出,栈溢出等. 程序应避免而不捕获的异常,对于运行 时异常类(RuntimeException),如数 组越界等. 必须捕获的异常,有些异常在编写程序 时是无法预料的,如文件没找到异常, 网络通信失败异常等.
《Java2程序设计实用教程》叶核亚
常见的公用异常类
算术异常ArithmeticException 空指针异常NullPointerException 类型强制转换异常ClassCastException 数组负下标异常 NegativeArraySizeException 数组下标越界异常 ArrayIndexOutOfBoundsException
5.5 自定义异常类
例5.6 自定义异常类.
class OverflowException extends Exception //自定义异常类 { public void printMsg() { System.out.println("exception: "+this.getMessage()); this.printStackTrace(); System.exit(0); } } public class Try7 { public void calc(byte k) throws OverflowException //抛出异常
5.1.1 错误与异常
致命性的错误:如果程序进入了死循环,或递归无法 结束,或内存溢出,这些现象称为错误 错误.错误只能在 错误 编程阶段解决,运行时程序本身无法解决,只能依靠 其它程序干预,否则会一直处于非正常状态. 非致命性的异常:如果运算时除数为0,或操作数超出 0 数据范围,或打开一个文件时发现文件不存在,或欲 装入的类文件丢失,或网络连接中断等,这些现象称 为异常 异常.在源程序中加入异常处理代码,当程序运行 异常 中出现异常时,由异常处理代码调整程序运行方向, 使程序仍可继续运行直至正常结束.
《Java2程序设计实用教程》叶核亚
1.异常的产生
例5.1 产生数组下标越界异常和除数为0异常.
public class Try1 { public static void main (String args[]) { int i=0; int a[] = {5,6,7,8}; for(i=0;i<5;i++) System.out.println(" a["+i+"]="+a[i]); System.out.print("3/0="+(3/0)); } }
例5.5 抛出异常的方法与调用方 法处理异常.
public class Try6 { public void calc(byte k) throws Exception //抛出异常 { byte y=1,i=1; System.out.print(k+"!="); for (i=1;i〈=k;i++) { if(y>Byte.MAX_VALUE/i) throw new Exception("overflow"); else y = (byte)(y * i); } System.out.println(y); }
《Java2程序设计实用教程》叶核亚
5.1.2 异常处理机制
抛出异常:当程序发生异常时,产生一个异常事 异常事 异常对象,并把它提交给运行系 件,生成一个异常对象 异常对象 统,再由运行系统寻找相应的代码来处理异常. 这个过程称为抛出 抛出(throw)一个异常. 抛出 捕获异常:异常抛出后,运行时系统从生成对象 的代码开始,沿方法的调用栈逐层回溯查找, 直到找到包含相应处理的方法,并把异常对象 交给该方法为止,这个过程称为捕获 捕获(catch) 捕获 一个异常.
第5章 异常处理
5.1 5.2 5.3 5.4 5.5 Java异常处理的基础知识 异常类的产生,捕获与处理 异常的分类 抛出异常 自定义异常类
《Java2程序设计实用教程》叶核亚
5.1 Java异常处理的基础知识
5.1.1 错误与异常 5.1.2 异常处理机制
《Java2程序设计实用教程》叶核亚
程序设计实用教程》 《Java2程序设计实用教程》 程序设计实用教程
第1章 概述 章 第2章 Java语言基础 章 语言基础 第3章 面向对象技术 章 第4章 Java类和对象的高级特征 章 类和对象的高级特征 第5章 异常处理 章 第6章 图形界面设计 章 第7章 多线程机制 章 第8章 输入输出流 章 第9章 Applet应用程序 章 应用程序 第10章 网络通信 章 开发技术JSP 第11章 Web开发技术 章 开发技术 第12章 J2EE概论 章 概论
《Java2程序设计实用教程》叶核亚
2.抛出异常的方法与调用方法处理 异常
抛出异常的方法
[〈修饰符〉]〈返回值类型〉〈方法名〉 ([〈参数列表〉]) [ throws 〈异常类〉]
由调用方法处理异常
由一个方法抛出异常后,系统将异常向上传 递,由调用它的方法来处理这些异常.
《Java2程序设计实用教程》叶核亚
《Java2程序设计实用教程》叶核亚
�
《Jav出异常
1. 使用throw语句抛出异常
throw 〈异常对象〉 try { if(y>Byte.MAX_VALUE/i) //Integer类的常量表示最大值 throw new Exception("overflow"); //溢出时抛出异常 else y = (byte) (y * i); } catch(Exception e) { System.out.println("exception: "+e.getMessage()); e.printStackTrace(); //显示异常信息 System.exit(0); }
《Java2程序设计实用教程》叶核亚
3.由方法抛出异常交系统处理
import java.io.*; public class Try3 { public static void main (String args[]) throws IOException { FileInputStream fis = new FileInputStream("autoexec.bat"); } }
《Java2程序设计实用教程》叶核亚
2.使用try-catch-finally语句捕获和 处理异常
try { 〈语句1〉 } catch (ExceptionType1 e) { 〈语句2〉 } finally { 〈语句3〉 }
《Java2程序设计实用教程》叶核亚
例5.2 异常的捕获和处理.
public class Try2 { public static void main (String args[]) { int i=0; int a[] = {5,6,7,8}; for(i=0;i<5;i++) { try { System.out.print("a["+i+"]/"+i+"="+(a[i]/i)); } catch(ArrayIndexOutOfBoundsException e) { System.out.print("捕获数组下标越界异常!");
《Java2程序设计实用教程》叶核亚
异常处理的类层次
Object Throwable
Error 错误类
Exception 异常类
图5.1 异常类层次结构
《Java2程序设计实用教程》叶核亚
5.2 异常类的产生,捕获与处理
1.异常的产生 2.使用try-catch-finally语句捕获和处理异 常
《Java2程序设计实用教程》叶核亚
5.3 异常的分类
程序不能处理的错误,Error类为错误类, 如内存溢出,栈溢出等. 程序应避免而不捕获的异常,对于运行 时异常类(RuntimeException),如数 组越界等. 必须捕获的异常,有些异常在编写程序 时是无法预料的,如文件没找到异常, 网络通信失败异常等.
《Java2程序设计实用教程》叶核亚
常见的公用异常类
算术异常ArithmeticException 空指针异常NullPointerException 类型强制转换异常ClassCastException 数组负下标异常 NegativeArraySizeException 数组下标越界异常 ArrayIndexOutOfBoundsException