热门文章
阿标在线 动力3.62HTML生成3.62网站文件说明
动力3.62整合动网7.0 SP2插
MDAC2.8 下载!
动力3.62版 防止垃圾留言
动力3.6全方位改动方法
让3.62不同频道实现不同风
把3.62首页登陆为横向代码
动易3.6首页随机FLASH修改
362首页和文章频道页图文幻
个性化修改3.6宝典
3.62轻易实现网摘功能
如何正确统计中文字数?
弹出JAVASCRIPT语法错误对
后台使“网站顶部LOGO地址
最新图片文章横向移动的修
html 生成艺术字
3.6 Sp2 Logo和Banner及广
日期值的计算
汉字转拼音
首页“图片更新”图片滚动
简体中文转换为繁体中文的
如何在css中定义链接的下划
Java入门笔记5_异常
[ 录入:阿标 | 点击数: | 更新时间:2005-3-2 14:44:00]
1. 异常/错误
1.1 异常处理的基本结构
异常处理的基本结构如下:
try {
someReallyExceptionalMethod();
} catch (NullPointerException n) { // a subclass of RuntimeException
. . .
} catch (RuntimeException r) { // a subclass of Exception
. . .
} catch (IOException i) { // a subclass of Exception
. . .
} catch (MyFirstException m) { // our subclass of Exception
. . .
} catch (Exception e) { // a subclass of Throwable
. . .
} catch (Throwable t) {
. . . // Errors, plus anything not caught above are caught here
} finally {…}
Java中异常和错误类都是从Throwable类中继承下来的,即Throwable类有两个子类:Error类及Exception类,Error类的实例是Java运行环境的内部错误,这些错误都是非常少及非常致命的,我们不能或者很少能对这些错误作出处理,或者捕获这些错误。
而Exception类可以分为二类,一种是运行时exceptions(Runtime exceptions)如SecurityException,ArrayIndexOutofBounds,NullPointerException等;另一种是除此之外的,如EOFException等。在Exception类层次结构上,越是上层的Exception类,就越具有一般性,而越下面的Exception就越具有针对性。在多数Exception类是java.lang包中的一部分,其它一些存在于其它的包中。
一般来说在将可能出错的代码放入try块中,而在catch中捕获可能的错误,一般从具体的错误开始,一直Throwable,而在finally中入些错误是否发生都需处理的代码,如退出循环,释放资源等。
1.2 声明可能产生异常的方法
在声明方法时可以加上关键字throws,用以说明该方法可能产生某个或者某些异常,如:
public boolean myOtherMethod (int x, int y)
throws AnException, AnotherExeption, AThirdException {
...}
有了这样的声明后,其它使用该方法的地方最好使用try…catch来处理该方法指定的异常。
1.3 创建自己的异常类
自己定义的异常类应从其它的异常类中继承下来,最好找一个接近的异常类来继承,如定义文件格式错误的异常类,最好从IOException继承。如果找不到接近的异常类继承,那么就直接从Exception类继承,因为它是所有异常类的鼻祖,以下是一个简单的自定义异常类:
class MyException extends Exception {
public MyException() {}
public MyException(String msg) {
super(msg);
}
}
说明:
(1) 异常类一般会有二个构造函数,一个带参数,一个带String类型的参数;
(2) 当然可以再定义其它的构造函数及自己的变量及方法成员,如可以在类中定义方法用于记录log;
以下是对该异常类的引用:
public static void g() throws MyException {
System.out.println("Throwing MyException from g()");
throw new MyException("Originated in g()");
}
说明:
(3) 在方法定义后引用异常类,可以直接将该类名放在throws后;
(4) 可以使用throw new MyException来抛出自定义异常的实例;
1.4 其它
(1) 如果使用带有throw定义的方法,应将它放入try…catch中,处理指定异常后,重新将该异常抛出,即向上传递;
(2) 对于一些可预测的可解决的异常最好直接在程序中处理掉,而不要抛出异常;
使用异常会占用大量的运行时间,所以尽量少用;