第五讲 异常处理
主要内容
Case:TryCatchDemo.java 5.1 异常处理概述
什么是异常 为何采用异常处理
5.2 异常的分类与层次 5.3 异常的处理机制
对异常处理的进一步讨论作业java中的异常处理 开始 返回 上一页 下一页 2
5.1 异常处理概述
5.1.1 什么是异常
异常就是在程序的运行过程中所发生的意外 事件,它中断指令的正常执行。 在Java中,把异常分为错误(Error)与异 常(Exception)两大类。 Java中提供了一种独特的处理异常的机制, 通过异常来处理程序设计中出现的错误。 异常情况(Exception)表示另外一种“非 同寻常”的错误。这种错误通常是不可预测 的。常见的异常情况包括内存不足,找不到 所需的文件等。 系统异常见P225 表7.1java中的异常处理 开始 返回 上一页 下一页 3
5.1.2 为何使用意外处理:把出错处理和正常代码分开。比如有程序是处理 文件,大家看流程,这个流程中充满了错误可能。 readFile { 打开文件;打不开咋办? 判断大小; 大小判断失败怎么办?(磁带) 分配内存; 内存不够 读入内存; 文件读不出来 关掉文件; 文件关不掉。。 } 解决方法:写大量的if语句。
java中的异常处理
开始
返回
上一页
下一页
传统的错误检测和纠正errorCodeType readFile { initialize errorCode = 0; ① 打开文件; if (打开文件成功) {② 判断文件长 if (文件长取到) {③ 分配内存 if (分内存成功) { ④ 读入内存 if (读文件失败) {errorCode = -1; }//读文件判断 } else {errorCode = -2; } //分配内存失败 } else {errorCode = -3; } //取不到文件长 ⑤ 关闭文件; if (文件没关&& errorCode == 0) {errorCode = -4; } else {errorCode = errorCode and -4; } } else {errorCode = -5; } return errorCode; }java中的异常处理 开始 返回 上一页 下一页 5
从上面的流程可看出真正有用的代码不多, 就五条而已,其它全部是判断错误用的,主 要逻辑都被错误处理代码混得看不清了,程 序可读性差,出错返回信息量太少。 在Java中,处理这种情况的方法是利用异 常处理,把出错处理和正常代码分开,Java 异常处理通过5个关键字 try,catch,finally,throw和throws进行管理。
java中的异常处理
开始
返回
上一页
下一页
Java的解决方式readFile {//结构清楚,无需自己判断,代码量小。 try { 打开文件; 判断大小; 分配内存; 读入内存; 关掉文件; } catch (文件打开失败) { 处理代码; } catch (大小取不到失败) { 处理代码; } catch (内存分配失败) { 处理代码; } catch (读取失败) { 处理代码; } catch (文件关闭失败) { 处理代码; }}java中的异常处理 开始 返回 上一页 下一页 7
异常示
例class A { public static void main(String[] args) { int a=20,b=0; try{ System.out.println(a/b); } catch(Exception e){ System.out.println(“除数为 0"); } } }java中的异常处理 开始 返回 上一页 下一页 8
5.2 异常类的分类与层次
5.2.1 异常类的层次结构
在jdk中,每个包中都定义了异常类,而所有的异常类都 直接或间接地继承于ng.Throwable类。当Java 程序遇到不可预料的错误时,会实例化一个从Throwable 类继承的对象。 java中的异常类可分为两大类:
◇ Error: 错误Error类指的是系统错误或运行环境出现的错误, 这些错误一般是很严重的错误,即使捕捉到也无法处理,由Java 虚拟机生成并抛出,包括系统崩溃、动态链接失败、虚拟机错误 等,在Java程序中不做处理。 ◇ Exception: 异常Exception类则是指一些可以被捕获且可能恢 复的异常情况,是一般程序中可预知的问题。对于异常可分为两 类:
(1) 运行时异常:程序中可以不做处理,直接由运行时系统来处理。 (2) 非运行时异常:在程序中必须对其进行处理,否则编译器会指出 错误。开始 返回 上一页 下一页 9
java中的异常处理
异常类的结构层次ng Object Error Throwable Exception RuntimeException ClassNotFoundException IllegalAccessException CloneNotSupportedException InstantiationException InterruptedException NoSuchFieldException NoSuchMethodException java.sql DataTruncation SQLException SQLWarning java.io EOFException IOException FileNotFoundException ArithmeticException ArraystoreException IndexOutOfBoundsException NullPointerException
java中的异常处理
开始
返回
上一页
下一页
5.2.2 Exception类
1. Exception类的构造方法
Exception类有两种构造方法: Exception():没有指定的消息串,直接构造 一个Exception。 Exception(String exp):根据参数提供的消 息串,创建一个Exception。Exception myExp=new Exception(“异 常!”);
例如,创建一个异常对象:
java中的异常处理
开始
返回
上一页
下一页
2. 常用方法
Exception类的方法均继承自Throwable类,可以为程 序提供一些有关异常的信息,常用方法如下: String getMessage() :返回该异常所存储的描述性 字符串。 String toString():返回异常对象的详细信息,包含该 类名和指出所发生问题的描述性消息的字符串。 void printStackTrace():将异常发生的路径,即引起 异常的方法调用嵌套序列打印到标准错误流。 例如:
System.out.println(myExp.getMessage()); 此语句可以将异常对象myExp的异常信息描述打印输出, …… 此处隐藏:2861字,全部文档内容请下载后查看。喜欢就下载吧 ……
