您的位置:首页 > 编程语言 > Java开发

<CoreJava> 11.1 处理异常

2013-02-28 19:04 295 查看
当程序出现异常时,应当次啊去一些异常处理措施:

·返回到一种安全状态,并能够让用户执行一些其他命令;

·允许用户保存所有操作结果,并以合适的方式终止程序。

需要关注的异常问题:

1、用户输入错误

2、设备错误

3、物理限制

4、代码错误

异常具有自己的语法和特定的继承结构,下面开始介绍:

11.1.1异常分类

所有已成都由Throwable继承而来,Throwable分为Error和Exception;Exception又分为RuntimeException和IOException。

Error类描述Java运行是系统的内部错误和资源耗尽错误。这种情况很少出现

RuntimeException是由程序本身导致的异常;IOException是由其他问题如I/O问题导致的异常。

RuntimeException的异常有以下几种情况:

·错误的类型转换

·数组访问越界(通过检查数组下标是否越界来避免ArrayIndexOutOfBoundsException异常)

·访问空指针(在使用变量之前检测是否为空来避免NullPointerException异常)

如果出现RuntimeException表明一定是你的问题!!!

IOException的异常包括:

·试图在文件尾部读取数据

·试图打开一个错误格式的URL

·试图根据给定的字符串查找class文件,而这个字符串代表的类不存在

Java规定将派生于Error类和RuntimeException类的异常称为未检查异常,IOException称为已检查异常。

11.1.2声明已检查异常

方法应在首部声明有可能出现的异常。例如,下面是标准类库中提供的FileInputStream类的一个构造器的声明:

[java]
view plaincopy

public FileInputStream(String name) throws FileNotFoundException

表示该构造器将根据给定的参数String创建一个FileInputStream对象,也有可能抛出一个FileNotFoundException异常。

遇到以下状况时要抛出异常:

1、调用一个已检查异常的方法

2、程序运行时发现错误,利用throw语句抛出一个已检查异常

3、程序错误

4、JVM和运行时库出现的内部异常

11.1.3如何抛出异常

抛出存在的异常类:

1、找到一个合适的异常类

2、创建这个类的对象

3、将对象抛出。

方法一旦被抛出,这个方法就不能返回到调用者。

11.1.4创建异常类

当遇到任何标准异常类都无法准确描述的问题时,就可以自己创建异常类。要做的是定义一个派生于Exception的类,或派生于Exception的子类。例如:

定义一个派生于IOException的类,定义的类应该包含两个构造器,一个实默认构造器,一个实带有详细描述信息的构造器(超类Throwable的toStrring方法会打印出这些详细信息,这样便于调试)

[java]
view plaincopy

class FileFormatException extends IOException {
public FileFormatException() {}
public FileFormatException(String gripe) {
super(gripe);
}
}

//现在就可以自定义异常类型了
String readData(BufferedReader in) throws FileFormatException {
....
while(...) {
if (ch == 1) {
if (n < len)
throw new FileFormatException();
}
....
}
return s;
}

API:java.lang.Throwable 1.0

·Throwable()

构造一个新的Throwable对象,该对象没有详细的描述信息

·Throwable(String message)

构造一个新的throwable对象,该对象有详细的描述信息

·String getMessage()

获取Throwable对象的详细描述信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: