当前位置:
文档之家› Java程序设计基础第6章 Java异常处理
Java程序设计基础第6章 Java异常处理
6.1 Java异常简介 6.1.1 引入异常
观察前面的程序,大家会发现大部分精力花在出错处理上了 只把能够想到的错误考虑到,对以外的情况无法处理 程序可读性差 出错返回信息量太少
6.1 Java异常简介 6.1.1 引入异常
用Java的try…catch异常处理机制处理:
{
try{
open the file;
determine its size;
allocate that much memory;
read the file;
close the file;
}
catch(fileOpenFailed)
{ dosomething; }
catch(sizeDetermineFailed){ dosomething; }
以常规方法处理错误: openFiles; if (theFilesOpen){
determine the length of the file; if (gotTheFileLength){
allocate that much memory; if (gotEnoughMemory){
read the file into memory; if (readFailed) errorCode=-1; else errorCode = -2; } else errorCode=-3; } else errorCode=-4 ; } else errorCode=-5;
这类异常一般是程序外部问题引起的异常。这类异常在语法上要 求必须处理,如果不处理将会出现语法错误,不能通过编译,这类异 常称为受检异常(checked exception),如 FileNotFoundException、IOException等 。
6.1.2 异常类层次结构
2. Exception类
表6-1 Exception类的常用方法
6.1.3 常用异常类
所有异常类都继承于Exception类,这些异常类各自代表了一种 特定的错误。这些子类有些是系统事先定义好并包含在Java类库中 的,对应着一个系统运行错误,有时称为系统定义异常。
表6-2 部分常用异常类
6.1.4 自定义异常类
系统定义的异常主要用来处理系统可以预见的较常见的运行错误,
6.1 Java异常简介 6.1.1 引入异常
没有错误处理的程序: {
open the file; determine its size; allocate that much memory; read the file; close the file; }
6.1 Java异常简介 6.1.1 引入异常
class MyException extends Exception{ //自定义的异常类子类MyException
public MyExce
}
public MyException(String s){
super(s);
//调用父类的Exception的构造函数
catch(memoryAllocateFailed) { dosomething; }
catch(readFailed)
{ dosomething; }
catch(fileCloseFailed)
{ dosomething; }
}
6.1.2 异常类层次结构
Java通过面向对象的方法来处理程序错误。一个异常是由一个 对象来表示,所有的异常都直接或间接地继承自Throwable接口。 Java所有的异常对象都是一个继承Throwable接口的实例。 Throwable接口是类库ng包中的一个类,它派生了两个子类: Error和Exception。
图6-1 Java中异常类的层次结构
6.1.2 异常类层次结构
1. Error类 Error类及其子类主要用来描述一些Java运行时刻系统内部的错
误或资源枯竭导致的错误,普通的程序不能从这类错误中恢复。此类 型的错误不能抛出,而且出现的几率是很小的。
6.1.2 异常类层次结构
2. Exception类 (1) RuntimeException异常
Java程序设计基础第6章 Java异常处理
本章主要内容
异常简介 Java异常处理机制
抛出和声明异常 捕捉异常 使用用户自定义异常
第6章 Java异常处理
一个程序在编译时没有错误信息产生,而在运行过程有时会出现一 些意外的情况导致程序退出,Java语言称之为异常(Exception)。对于 计算机程序来说,异常都是不可避免的。Java内置的异常处理机制可较 好地对这些异常进行处理,保证程序的安全运行。
对于某个特定的应用程序所特有的运行错误,则需要编程人员根据程
序的特殊逻辑在用户程序里自己创建用户自定义的异常类和异常对象。
这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。
自定义异常必须继承自Throwable或Exception类,用户自定义的异
常建议采用Exception作为异常类的父类,自定义异常的格式如下:
}
public String toString(){
//重载父类的方法,给出详细的错误信息
…
}
…
}
6.2 Java异常处理机制 6.2.1 抛出和声明异常
Java程序在运行时如果引发了一个可以识别的错误,就会产生 一个与该错误相对应的异常类的对象,这个过程叫做异常的抛出。抛 出的是相应异常类对象的实例。
这类异常属于程序缺陷异常,是设计或实现上的问题。 RuntimeException可以不使用try…catch进行处理,此这类异常也 被称为非受检异常(unchecked exception),但是如果有异常产 生,则异常由JVM处理,程序中断执行,所以保证程序在出错后依然 可以执行,在开发时还是最好使用try…catch处理。 常见的RuntimeException异常如 ArrayIndexOutOfBandsException、ArithmeticException和 NumberFormatException等。 (2) 非RuntimeException异常