异常的处理try-catch

Java异常处理

Java采用的异常处理机制,是将异常处理的程序代码集中在一起, 与正常的程序代码分开,使得程序简洁、优雅,并易于维护。
* 异常的处理: 抓抛模型
*
*
* 过程一 : 抛, 程序在执行过程中,一旦出现异常,就会在异常处生成一个对应异常类的异常对象,
* 并将此对象抛出,
* 一旦抛出对象后,其后代码就不会执行了
*
* 过程二: 抓 可以理解为异常的处理方式
* a: try-catch-finally
* b: throws

try-catch-finally 处理

 * try{
 *
 *     可能出现异常的代码
 *
 * }catch(异常类型1,变量名1){
 *     //处理异常的方法1
 * }catch(异常类型2, 变量2){
 *     //处理方式2
 * }
 * ......
 *
 * finally{
 *     //一定会执行的代码
 * }
 *
 */


try{

...... //可能产生异常的代码 }

catch( ExceptionName1 e ){

...... //当产生ExceptionName1型异常时的处置措施 }

catch( ExceptionName2 e ){
...... //当产生ExceptionName2型异常时的处置措施 }
[ finally{
...... //无论是否发生异常,都无条件执行的语句 }]

// finally 是可选择的 不是必须de
// try把可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常处理的对象,根据此对象的类型,去catch中匹配
// 一旦try中的异常对象匹配到某一个catch时就进入这个catch中进行异常处理,一旦处理完成就跳出当前的tray-catch结构(在没有写finally)继续执行后面的结构
// catch没有字父类关系,声明再上和下无所谓
// 常用的异常处理发方式: String : getMessage()   e.printStackTrace()
    public static void main(String[] args) {
        try {
            String abc = "abc";
            Integer num  = Integer.parseInt(abc);
        }catch (NumberFormatException e){
            e.printStackTrace();
            System.out.println("碰到了异常别着急");
        }
        System.out.println("hello");
    }

finally: 上面的无论是否获取到,都会执行下面的finally信息

finally声明的是一定会被执行的代码, 不论catch是否执行了都会去执行finally的信息

   try{
            String abc = "abc";
           int num =  Integer.parseInt(abc);
            System.out.println(num);
        }catch (NumberFormatException e){  //正常错误获取
            System.out.println("This is num error");
        }catch (FactoryConfigurationError e){
            System.out.println(e);
        }finally {
            System.out.println("上面的获取到了");
        }
    }
输出:
// This is num error
//上面的获取到了

catch未获取到错误信息 finally也输出

  public static void main(String[] args) {          
      try{                                          
          String abc = "abc";                       
         int num =  Integer.parseInt(abc);          
          System.out.println(num);                  
      }catch (IllegalAccessError e){                
          System.out.println("This is num error");  
      }catch (FactoryConfigurationError e){         
          System.out.println(e);                    
      }finally {                                    
          System.out.println("上面的错误未获取到");          
      }                                             
  } 
//上面的错误未获取到

异常处理方式二:

throws+异常类型

   public static void main(String[] args) {                       
       try{                                                       
            method2();                                            
       }catch(NumberFormatException e){                           
           System.out.println("碰到了问题");                           
       }                                                          
   }                                                              
                                                                  
    public static void method2() throws NumberFormatException{    
                                                                  
         method1();                                               
        System.out.println("pengdaole ");                         
                                                                  
     }                                                            
     public static void method1(){                                
       String abc = "abc";                                        
       int num = Integer.parseInt(abc);                           
   }                                                              
                                                                  
                                                                  

体会:

try catch 是真正的处理异常,而throws只是把异常抛给了方法的调用者,并没有将异常处理掉

.

原文地址:https://www.cnblogs.com/zhaoyunlong/p/11768397.html