使用Java创建自己的异常子类
来源:互联网 发布:淘宝商家服务社区 编辑:程序博客网 时间:2024/06/16 05:36
Java知多少(53)使用Java创建自己的异常子类
尽管Java的内置异常处理大多数常见错误,你也许希望建立你自己的异常类型来处理你所应用的特殊情况。这是非常简单的:只要定义Exception的一个子类就可以了(Exception当然是Throwable的一个子类)。你的子类不需要实际执行什么——它们在类型系统中的存在允许你把它们当成异常使用。
Exception类自己没有定义任何方法。当然,它继承了Throwable提供的一些方法。因此,所有异常,包括你创建的,都可以获得Throwable定义的方法。这些方法显示在表10-3中。你还可以在你创建的异常类中覆盖一个或多个这样的方法。
下面的例子声明了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
好文要顶 关注我 收藏该文
阅读全文