会计考友 发表于 2012-8-4 12:28:23

JAVA技巧:Java异常处理的一个综合实例

声明抛出异常
如不雅察看序员不想在当前体例内措置异常,可以使用throws语句声明将异常抛出到挪用体例中。
挪用体例也可以将异常再抛给其他挪用体例。
如不美观所有的体例都选择了抛出此异常,最后Java虚拟机将捕捉它,输出相关的错误信息,并终止轨范的运行。
在异常被抛出的过程中,任何体例都可以捕捉异常并进行响应的措置。
捕捉异常
捕捉异常需要使用try、catch、finally组成的语句块。
try语句块中是可能抛出异常的代码,如不美观一条语句抛出了异常,厥后续语句不会继续执行,而是转到catch进行异常类型匹配。
catch语句块负责捕捉指定类型的异常并进行措置。
finally语句块是可选的,一般用于释放资本,无论是否发生异常,finally语句块总会执行。
因为担任,在有多个异常需要捕捉时,异常类型的挨次很主要。
getMessage()体例返回一个对发生的异常进行描述的字符串。
printStackTrace()体例打印体例的挪用序列,一向到异常的发生位置。
    try{
      //可能抛出异常的代码
    }catch(ExceptionType1 e1){
      //抛出异常ExceptionType1时的异常措置代码
    }catch(ExceptionType2 e2){
      //抛出异常ExceptionType2时的异常措置代码
    }finally{
      //无论是否抛出异常,城市执行的代码
    }
抛出异常不仅Java系统的类可以抛出异常,用户轨范也可以抛出异常。经由过程throw语句来抛出异常对象。    throw new ExceptionType1();
声明异常类除了使用系统预界说的异常类外,用户还可以声明自己的异常类。用户自界说的异常类必需是Exception的子类。    public class MyException extends Exception{
      public MyException(){
            super("发生异常了!");
      }
    }
view plaincopy to clipboardprint?package cn.edu.uibe.exp;   class MyExp extends Exception{         private static final long serialVersionUID = 1L;            MyExp(){         super("自界说异常");       }          }   public class Exp2 {         public void f1(int n) {         System.out.println("f1前面");         f2(n);         System.out.println("f1后面");         }         public void f2(int n) {         System.out.println("f2前面");         try{            System.out.println("try的前面");            f3(n);            System.out.println("try的后面"); //发生异常时不会输出         }catch(MyExp e){               System.err.println(e.getMessage());         }finally{               System.out.println("无论是否发生异常");         }         System.out.println("f2后面");       }         public void f3(int n) throws MyExp{         System.out.println("f3前面");         f4(n);         System.out.println("f3后面"); //发生异常时不会输出       }         public void f4(int n) throws MyExp{         System.out.println("f4前面");         if(n
页: [1]
查看完整版本: JAVA技巧:Java异常处理的一个综合实例