继承Exception:构造java自定义异常类

2010年3月16日 | 分类: 技术 | 标签: 4,746浏览 | By admin

我们知道,如果系统抛出了异常,程序就会终止运行,有时候,这种情况很让人恼火,比如我们启动了一个任务线程,你一直以为它在正常的运行,但当你第二天一大早查看的时候发现它实际上因为抛出了一个异常早就停止了运行,这个原本你以为一个晚上就可以完成的任务就没有完成了,所以我们有时为了不让系统因为抛出异常而终止运行,我们就采用try…catch块来捕获异常,从而使得程序在出现了异常的时候仍能继续运行下去。

但有时候,当我们系统运行缺少某些必要的条件时,我们却一定要使得程序就此打住不要再运行下去了,那么这个时候try…catch块就不合适了,因此可以考虑编写自定义的异常类来完成这样的工作。

Exception类是java中所有异常类的父类,比如我们经常见到的NullPointerException所继承的父类RuntimeException就是继承于Exception,Exception类有四个构造方法,子异常类在继承Exception类后,可以自由选择调用其中的哪个构造方法,四个构造方法分别如:

构造方法摘要
Exception()
构造详细消息为 null 的新异常。
Exception(String message)
构造带指定详细消息的新异常。
Exception(String message, Throwable cause)
构造带指定详细消息和原因的新异常。
Exception(Throwable cause)
根据指定的原因和 (cause==null ? null : cause.toString()) 的详细消息构造新异常(它通常包含 cause 的类和详细消息)。

现在我们自定义一个异常类:MyException,代码如下:

public class MyException extends Exception {

private static final long serialVersionUID = 1L;

/**

* 带自定义错误信息的输出

* @param message

*/

public MyException(String message){

super(message);

}

/**

* 自定义错误信息和异常抛出

* @param message

* @param cause

*/

public MyException(String message,Throwable cause){

super(message,cause);

}

/**

* 只有异常抛出

* @param cause

*/

public MyException(Throwable cause){

super(cause);

}

}

从上可看出,代码非常简单,我们调用了父类三个构造方法,下面来做一个简单的抛出异常例子:

public static void main(String[] args) throws MyException {

try{

String s = null;

s.trim();

}catch(NullPointerException e){

throw new MyException("s is null",e);

}

}

抛出异常如下:

Exception in thread "main" MyException: s is null

at Test.main(Test.java:717)

Caused by: java.lang.NullPointerException

at Test.main(Test.java:715)

跟java的系统异常类的使用也是一样的,就是如此简单。

如无转载说明,则均为本站原创文章,转载请注明:来源:子猴博客





相关内容

  1. 2010年3月16日21:21

    关于java,学起来很難。

  2. 2010年3月17日22:09

    嗯……Java中的自定义Exception还真的挺有用的,在一些大型的系统中完全可以定义一个自己的异常类,在启动的时候就加载。比它提供的人性化多了。

  3. 路人。甲
    2010年4月23日22:56

    学习~ 谢谢分享!~ :-P

*

酷!左边勾选上复选框,评论里将显示你博客文章!
:wink: :-| :-x :twisted: :) 8-O :( :roll: :-P :oops: :-o :mrgreen: :lol: :idea: :-D :evil: :cry: 8) :arrow: :-? :?: :!:

Upload Files

你可以上传一张或多张图片,这些图片将附在你评论里