ITPub博客

首页 > 应用开发 > Java > Java 异常处理六

Java 异常处理六

原创 Java 作者:azz 时间:2007-08-23 22:17:45 0 删除 编辑
Java 异常处理六[@more@]  “throw”语句

  所有的方法都使用“throw”语句来抛出一个异常。Throw语句需要一个单独throwable对象,这个对象是任意Throwable类的子类。如下类所示:

   throw someThrowableObject;
   让我们在程序的上下文中来看一下throw语句。下面的pop方法把来自于一个公共堆栈中的一个执行类给删除。这个方法从堆栈上面的元素,并且返回被删除的对象。

   public Object pop() throws EmptyStackException {
   Object obj;
   if (size == 0) {
   throw new EmptyStackException();
   }
   obj = objectAt(SIZE - 1);
   setObjectAt(SIZE - 1, null);
   size--;
   return obj;
   }
   pop方法检查堆栈上是否有元素。如果堆栈是空的(也就是说它的尺寸等于0),pop方法就会实例化一个新的EmptyStackException对象(它是java.util中的一个成员),并且抛出它。在这章的后面一节会解释怎样创建自己的异常类。对于现在,你所需要记住的是你只能抛出继承于java.lang.Throwable类的对象。

   注意,pop方法的声明中包含了一个throws子句。EmptyStackException是一个检查性异常,并且pop方法没有捕捉这个异常。因此,这个方法必须使用throws子名来声明它所抛出的异常的类型。

   Throwable 类和它的子类
   继承Throwable类的对象包括直接子类(直接继承于Throwable类的对象)和间接子类(继承于Throwable类的子类的对象)。下图说明了Throwable类的层次关系和最主要的一些子类。象你看到的一样,Throws有两个直接的子类:Error类和Exception类。

   Error类
   当在Java虚拟机中发生动态连接失败或其它的定位失败的时候,Java虚拟机抛出一个Error对象。典型的简易程序不捕获或抛出Errors对象。

   Exception类
   大多数程序都抛出或捕获衍生于Exception类的对象。一个异常表明发生了一个问题,但它不是严重的系统问题。你编定的大多数程序将会抛出或捕获Exceptions对象(而不是Errors对象)。

   在Java平台中Exception类有许多已经定义了的子类。这些子类说明所发生的异常的各种类型。例如,IllegalAccessException异常类说明了不能找到一个特殊的方法;NegativeArraySizeException异常类说明程序试图创建一个带有负尺寸的数组。

   有一个特殊的Exception子类:RuntimeException。这个子类是在程序运行期间在Java虚拟机内部所发生的异常。例如NullPointerException类就是一个运行时异常类,在一个方法试图通过一个null引用来访问一个对象的成员时会发生这个异常。在Unchecked Exceptions---The Controversy这一节中,我们会讨论为什么典型的程序不应该抛出运行时异常或RuntimException类的子类异常对象。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10901326/viewspace-965500/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
  • 博文量
    652
  • 访问量
    554475