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

使用Java创建自己的异常子类

2017-12-25 14:48 239 查看


Java知多少(53)使用Java创建自己的异常子类

尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。

Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。

表 10-3 Throwable 定义的方法
方法描述
Throwable fillInStackTrace( )返回一个包含完整堆栈轨迹的Throwable对象,该对象可能被再次引发。
String getLocalizedMessage( )返回一个异常的局部描述
String getMessage( )返回一个异常的描述
void printStackTrace( )显示堆栈轨迹
void printStackTrace(PrintStreamstream)把堆栈轨迹送到指定的流
void printStackTrace(PrintWriterstream)把堆栈轨迹送到指定的流
String toString( )返回一个包含异常描述的String对象。当输出一个Throwable对象时,该方法被println( )调用
下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。

1 // This program creates a custom exception type.
2 class MyException extends Exception {
3     private int detail;
4     MyException(int a) {
5         detail = a;
6     }
7
8     public String toString() {
9         return "MyException[" + detail + "]";
10     }
11 }
12
13 class ExceptionDemo {
14     static void compute(int a) throws MyException {
15         System.out.println("Called compute(" + a + ")");
16        if(a > 10)
17           throw new MyException(a);
18        System.out.println("Normal exit");
19     }
20
21     public static void main(String args[]) {
22        try {
23            compute(1);
24            compute(20);
25         } catch (MyException e) {
26             System.out.println("Caught " + e);
27         }
28     }
29 }


该例题定义了Exception的一个子类MyException。该子类非常简单:它只含有一个构造函数和一个重载的显示异常值的toString( )方法。ExceptionDemo类定义了一个compute( )方法。该方法抛出一个MyException对象。当compute( )的整型参数比10大时该异常被引发。

main( )方法为MyException设立了一个异常处理程序,然后用一个合法的值和不合法的值调用compute( )来显示执行经过代码的不同路径。下面是结果:

Called compute(1)

Normal exit

Called compute(20)

Caught MyException[20]
系列文章:

Java知多少(上)
Java知多少(中)

分类: Java
标签: Java

好文要顶 关注我 收藏该文 

 






Coda
关注 - 1
粉丝 - 329

+加关注

0

« 上一篇:Java知多少(52)内置异常
» 下一篇:Java知多少(54)断言详解
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐