正文

Exception用法2005-09-16 19:00:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/hurongliang/4829.html

分享到:

/*在Java程序的执行过程中,如果出现了异常事件,就会生成一个例外对象。 java中的例外类可分为两大类:  Error:  动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类例外,也不会抛弃这种例外。  Exception:  1)运行时例外:   继承于RuntimeException的类都属于运行时例外,   由于这些例外产生的位置是未知的,Java 编译器允许程序员在程序中不对它们做出处理.   2)非运行时例外:   除了运行时例外之外的其他由Exception 继承来的例外类都是非运行时的例外,   Java编译器要求在程序中必须处理这种例外. 两种处理例外的机制:  捕获例外:  简言之,就是try-catch语句.  声明抛弃例外:  如果一个方法并不知道如何处理所出现的例外,则可在方法声明时,  声明抛弃(throws)例外。这是一种消极的例外处理机制。  简言之,就是在方法前加throws Xxx. 例外类的层次见HELP try-catch-finally:  try{  ......   }catch( ExceptionName1 e ){//没一个catch语句称为一个异常处理器   ......   }catch( ExceptionName2 e ){   ......   }   ......   }finally{   ......  } 在执行try语句块期间的任何时刻抛出异常是,如果存在相应的异常处理器,程序控制会立即转到它上面。就是说,程序控制会转到其异常类与所抛出的异常类对应的第一个catch句子上。执行完catch子句后,程序控制会转到整个try语句后的语句finally语句必须在catch 子句后面try必须, catch和fianlly可选。*///Programme 1:public class TestException{ public static void main(String[] args) {  //处理例外机制1:捕获例外  try  {   int a=0, b=0;   a /=b;  }  /*在catch块中是对例外对象进行处理的代码,与访问其它对象一样,  可以访问一个例外对象的变量或调用它的方法。getMessage( )是类  Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable  还提供了方法printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容  */    /*捕获例外的顺序和catch语句的顺序有关,当捕获到一个例外时,  剩下的catch语句就不再进行匹配。因此,在安排catch语句的顺序时,  首先应该捕获最特殊的例外,然后再逐渐一般化。也就是一般先安排子类,  再安排父类。  */   catch (ArithmeticException e)  {   e.printStackTrace(System.out);  }  /*当捕获到一个例外时,剩下的catch语句就不再进行匹配,  所以下面的catch语句不执行  */  catch(RuntimeException e)  {   System.out.println(e.getMessage());  } }}/*result:java.lang.ArithmeticException: / by zero        at TestException.main(TestException.java:9) */   //Programme 2:class Test{ public int devide(int x, int y) throws DevideByMinusException/*处理例外机制2:抛出例外.           声明抛弃例外是在一个方法声明中的throws子句中指明的.           throws子句中同时可以指明多个例外,之间由逗号隔开。           此处的DevideByMinusException也可以改成其父类           Exception,没有影响.*/ {  if (y < 0)  /*抛出例外就是产生例外对象的过程,首先要生成例外对象,例外或者由虚拟机生成,  或者由某些类的实例生成,也可以在程序中生成。在方法中,抛出例外对象通过throw语句实现。*/   throw new DevideByMinusException ("cannot devided by minus");  int result = x/y;  return result; }} class DevideByMinusException extends Exception//自定义例外类必须是Throwable的直接或间接子类。{ public DevideByMinusException(String msg) {  super(msg); }} class TestException{ public static void main(String[] args) {  Test test = new Test();  //方法的调用者必须了解这些例外,并确定如何正确的处理他们。  try  {   test.devide(3, -1);  }  catch (Exception e)  {   System.out.println (e.getMessage());  }    System.out.println ("Programme is running here!"); }}/*result:cannot devided by minusProgramme is running here! */

阅读(3427) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册