手机
当前位置:查字典教程网 >编程开发 >Java >详解Java的内置异常以及创建自定义异常子类的方法
详解Java的内置异常以及创建自定义异常子类的方法
摘要:内置异常子类在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些。这些异常一般是标准类RuntimeExcep...

内置异常子类

在标准包java.lang中,Java定义了若干个异常类。前面的例子曾用到其中一些。这些异常一般是标准类RuntimeException的子类。因为java.lang实际上被所有的Java程序引入,多数从RuntimeException派生的异常都自动可用。而且,它们不需要被包含在任何方法的throws列表中。Java语言中,这被叫做未经检查的异常(unchecked exceptions )。因为编译器不检查它来看一个方法是否处理或抛出了这些异常。 java.lang中定义的未经检查的异常列于表1。表2列出了由 java.lang定义的必须在方法的throws列表中包括的异常,如果这些方法能产生其中的某个异常但是不能自己处理它。这些叫做受检查的异常(checked exceptions)。Java定义了几种与不同类库相关的其他的异常类型。

表1:Java 的 java.lang 中定义的未检查异常子类

详解Java的内置异常以及创建自定义异常子类的方法1

表2:java.lang 中定义的检查异常

详解Java的内置异常以及创建自定义异常子类的方法2

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

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

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

表3 Throwable 定义的方法

详解Java的内置异常以及创建自定义异常子类的方法3

下面的例子声明了Exception的一个新子类,然后该子类当作方法中出错情形的信号。它重载了toString( )方法,这样可以用println( )显示异常的描述。

// This program creates a custom exception type. class MyException extends Exception { private int detail; MyException(int a) { detail = a; } public String toString() { return "MyException[" + detail + "]"; } } class ExceptionDemo { static void compute(int a) throws MyException { System.out.println("Called compute(" + a + ")"); if(a > 10) throw new MyException(a); System.out.println("Normal exit"); } public static void main(String args[]) { try { compute(1); compute(20); } catch (MyException e) { System.out.println("Caught " + e); } } }

该例题定义了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判断本机IP地址类型的方法

解析Java实现随机验证码功能的方法详解

java ant 配置及构建项目图文教程

java 代码中预防空指针异常的处理办法

java 重定义数组的实现方法(与VB的ReDim相像)

在java中 利用匿名内部类进行较简洁的双括弧初始化的方法

java线程之使用Runnable接口创建线程的方法

Java中统计字符个数以及反序非相同字符的方法详解

Java线程关闭的3种方法

精品推荐
分类导航