论坛首页 Java企业应用论坛

Java异常处理机制

浏览 2439 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-12-06  
在整个Java的异常处理中,实际上也是按照面向对象的方式进行处理,处理步骤如下:

(1) 一旦产生异常,则首先会产生一个异常类的实例对象。

(2) 在try语句对此异常对象进行捕捉。

(3) 产生的异常对象与catch语句中的各个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。

 Try{
   
  //产生异常代码,并产生异常类的实例对象  

 }catch(Exception e){ //匹配异常类型
 
  //执行异常处理代码 

 }finally{

  //异常统一出口

 }
开发常见问题之一程序开发中不会只存在一个异常,肯定会同时存在多个异常,此是,就需要使用多个catch语句进行处理,那捕获异常如何排顺?所以要注意,在Java中所有捕获范围小的异常必须放在捕获大的异常之前,否则程序编译时就会出现错误。


 public class ExceptionDemo{
    public static void main(String args[]){

       System.out.println("计算开始");
       int i=0 ;
       int j=0 ;
       try{
           String str1 = args[0] ;
           String str2 = args[1] ;
           i = Integer.parseInt(str1) ;
           j = Integer.parseInt(str2) ;  
           int result = i /j ;          .......................产生异常
           System.out.println("两个数字相除结果:"+result) ;
       }catch(Exception e1){            ..................异常捕获范围大
          
           System.out.println("其它异常:"+e1.getMessage()) ;         

       }catch(ArithmeticException e2){  ................错误,无法捕获

           System.out.println("算术异常:"+e2.getMessage()) ;

       }finally{

           System.out.println("计算结果") ;  .............出口,一定执行

       }

    }
 }


引用
结果:编译出错


引用
开发常见问题之二throw与throws区别。在定义一个方法时可以使用throws声明,使用throws声明的方法表示此方法不处理异常而交给方法调用处进行处理;而throw则直接抛出异常,两都常在一起使用,throw常用于自定义异常处理。上述为例说明


  public class ExceptionDemo{
      //执行相除
      public int div(int i,int j) throws Exception{.....往上抛,由方法调用处进行处理,这里则由主方法处理
          int result = 0 ;
          try{

            result = i / j ;

          }catch(Exception e){

            throw e;                           ........直接抛出异常

          }
          return result;
      }
      //主方法
      public static void main(String args[]){
          
          ExceptionDemo ex = new ExceptionDemo();
    
          try{

             System.out.println("操作结果:"+ex.div(8,4));       
 
          }catch(Exception e){
     
             System.out.println(e.getMessage()) ;
          
          }
      }
  }
 
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics