当前位置:文档之家› 异常处理机制

异常处理机制

异常的基本概念
异常是导致程序终止运行的一种指令流,如果不对异常进行正确的处理,则可能导致程序的中断执行,造成不必要的损失。

在没有异常处理的语言中如果要回避异常,就必须使用大量的判断语句,配合所想到的错误状况来捕捉程序中所有可能发生的错误。

Java异常处理机制具有易于使用、可自行定义异常类、处理抛出的异常同时又不会降低程序运行的速度等优点。

因而在java程序设计时应充分地利用java的异常处理机制,以增进程序的稳定性及效率。

当程序中加入了异常处理代码,所以当有异常发生后,整个程序并不会因为异常的产生而中断执行。

而是在catch中处理完毕之后,程序正常的结束。

在整个java异常的结构中,实际上有两个最常用的类,分别为Exception和Error 这两个类全都是Throwable的子类。

Exception:一般表示的是程序中出现的问题,可以直接使用try……catch处理。

Error:一般值JVM错误,程序中无法处理。

Java异常处理机制。

在整个java的异常处理中,实际上也是按照面向对象的方式进行处理,处理的步骤如下:
1)一旦产生异常,则首先会产生一个异常类的实例化对象。

2)在try语句中对此异常对象进行捕捉。

3)产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功则执行catch语句中的代码。

异常处理
在定义一个方法时可以使用throws关键字声明,表示此方法不处理异常,而交给方法的调用处进行处理,在方法调用处不管是否有问题,都要使用try……catch块进行异常的捕获与处理。

如果在主方法中使用throws关键字,则程序出现问题后肯定交由jvm处理,将导致程序中断。

与throws关键字不同的是,throw关键字人为的抛出一个异常,抛出时直接抛出异常类的实例化对象即可。

Exception在程序中必须使用try……catch进行处理。

RuntimeException可以不使用try……catch进行处理,但是如果有异常产生,则异常将由JVM进行处理。

(建议RuntimeException的子类也使用try……catch进行处理,否则产生的异常交给jvm处理会导致程序中断。


继承关系:
Exception》RuntimeException》lllegalArgumentException》NumberFormatException;
异常类必须继承于Exception 建议:继承Exception一般要添加全部父类型一样的构造器!
class NameOrPwdException extends Exception {
public NameOrPwdException() {
super();
}
public NameOrPwdException(String message, Throwable cause) {
super(message, cause);
}
public NameOrPwdException(String message) {
super(message);
}
public NameOrPwdException(Throwable cause) {
super(cause);
}
}
java中有垃圾回收GC, 为什么还要调用close
因为java的垃圾回收,用户是没有办法控制的,它会在不确定的时候触发,而且java 不保证在整个程序运行期一定会触发垃圾回收,所以对于流、socket等之类的资源用完之后一定要关闭。

而且垃圾回收机制对于socket、thread之类的对象即使引用计数为0了,只要还是在活动的情况下,也不会被回收。

流不单在内存中分配了空间,也在操作系统占有了资源,java的gc是能从内存中回收不使用的对象,但对操作系统分配的资源是无能为力的,所以就要调用close()方法来通知OS来释放这个资源。

相关主题