应用技巧:Java中的异常处理
来源:优易学  2010-1-11 13:49:30   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  我们来看看另一个例子。在这个例子中,我们会要建立自己的异常实例类,该类扩展了其母Exception类。应用程序会模拟用于异常处理和抛出的堆栈机制,如堆栈是满的或者是空的。检查一下。
  Public class StackException extends Exception {
  Public StackException (String text) {
  Super (text)
  }
  }
  现在让我们创建一个Stack类。注意push和pop方法。它们正抛出StackException,而这一动作由方法签名导入。此外,还有一个if条件,且条件满足时,异常事件会被抛出。否则,一切都会顺利运行。
  public class Stack {
  private final int SIZE = 100;
  private Object st[];
  private int size;
  private int sp;
  public Stack (int size) {
  if (size < MAXSIZE)
  this.size = size;
  else
  this.size = MAXSIZE;
  this.st = new Object [size];
  this.sp = -1;
  }
  public void push (Object o) throws StackException {
  if (sp == this.size - 1)
  throw new StackException ("Stack is full");
  this.st [++this.sp] = o;
  }
  public Object pop () throws StackException {
  if (sp == -1)
  throw new StackException ("Stack is empty");
  Object o = this.st [this.sp];
  this.sp--;
  return o;
  }
  public boolean isEmpty() {
  return this.sp == -1;
  }
  }
  好的,现在是时候写一写Main class连同主要方法了。在这一部分,请对try-catch语句给予更多关注。有两类异常情况可以被捕捉到。你也可以很容易地找出它们。
  public class Main {
  public static void main (String args[]) {
  Stack s = new Stack (10);
  for (int i = 0; i <= 10; ++i)
  try {
  s.push (new Integer(i));
  }
  catch (StackException e) {
  System.out.println (e);
  }
  while (! s.isEmpty() ) {
  try {
  System.out.println( (Integer)(s.pop()) );
  }
  catch (StackException e) {
  System.out.println(e);
  }
  }
  }
  }
  当然,这里也会有附带输出。如你所见,第一行显示出的就是异常事件,因为我们要用11个要素填补堆栈,因此,在循环到isEmpty是错误的时,异常事件不会抛出。
  Stack is full
  练习几次以上的几段代码。如果异常事件被抛出但是却能够正确被处理那就不要感到惊讶。这就是异常处理的神奇之处。
  总结
  在这篇文章里我们就异常处理的实用性和重要性进行了分析。我们都知道,不管是检查过的或是未经检查的,程序员都要处理好异常事件,否则可能出现程序的异常终止。我们强调要将理论与实践相结合。坦率地说,本文虽只是冰山一角,但一些基本的知识已经介绍给了大家。希望能在异常处理方面对大家有所帮助。

上一页  [1] [2] 

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
热门课程培训