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

来源:互联网 发布:淘宝商家服务社区 编辑:程序博客网 时间:2024/06/16 05:36

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 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 宏基电脑维修 宏基电池多少钱 宏基电脑换屏幕多少钱 宏基电脑专卖店 宏基笔记本维修点 宏基v5552g怎么样 宏基售后服务网点 宏碁 宏碁笔记本电脑 宏碁怎么样 宏碁笔记本电脑怎么样 鸿基笔记本 宏碁怎么读 宏碁商城 hongqi 笔记本宏碁 宏碁笔记本 宏碁集团 aser 电脑宏碁 鸿基电脑 宏碁售后 为什么没人买宏基暗影骑士 宏塑 宏声 宏大爆破 宏大 规模宏大 宏大近义词 宏大反义词 宏大的意思 宏大意思 宏大集团 宏大石业 宏大电梯 宏大爆破股吧 规模宏大的意思 宏大的反义词 宏大的近义词 002683宏大爆破 形容气势宏大的成语