Java 异常处理(1) :try-catch-finally的使用

  1 package com.bytezero.throwable;
  2 
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.FileNotFoundException;
  6 import java.io.IOException;
  7 
  8 import org.junit.Test;
  9 
 10 /**
 11  * 
 12  * @Description   异常处理 :
 13  * @author Bytezero·zhenglei!        Email:420498246@qq.com
 14  * @version
 15  * @date 上午8:35:40
 16  * @     一:异常处理 : 抓抛模型
 17  * 
 18  *  过程一: “抛”:程序在正常执行的过程中,一旦出现异常,就会在异常代码处生成
 19  *  一个对应异常类的对象。并将此对象输出。
 20  *   一旦抛出对象以后,其后的代码不再执行。
 21  *   
 22  *   
 23  *   过程二:“抓”:可以理解为 异常的处理方式,:①try-catch-finally  ②throws
 24  *   
 25  *   
 26  *   二:try-catch-finally的使用
 27  *   
 28  *   try{
 29  *   
 30  *           //可能出现异常的代码
 31  *   
 32  *   }catch(异常类型1 变量名1){
 33  *   
 34  *       //处理异常的方式1
 35  *   
 36  *   }catch(异常类型2 变量名2){
 37  *   
 38  *       //处理异常的方式2
 39  *   
 40  *   }catch(异常类型3 变量名3){
 41  *   
 42  *       //处理异常的方式3
 43  *   
 44  *   }
 45  *   .....
 46  *   finally{
 47  *   
 48  *           //一定会执行的代码
 49  *   }
 50  *   
 51  *   说明:
 52  *   1.finally是可选的。
 53  *   2.使用try将可能出现的代码包装起来,在执行过程中,一旦出现异常,就会生成
 54  *   一个对应异常的对象,根据此对象的类型,去catch中进行匹配
 55  *   3.一旦try中的异常对象匹配到某一个catch时,就进入catch中进行异常的处理。一旦
 56  *   处理完成后,一旦处理完成,就跳出当前的try  catc 结构(在没有写finally的情况)。继续
 57  *   执行其后的代码
 58  *   4.catch中的异常类型 如果没有子父类关系,则说声明在上,都可以
 59  *     catch中的异常类型 如果满足子父类关系,则要求子类一定声明在父类的上面,否则,报错
 60  *
 61  *   5.常用的异常对象处理方式:①String getMessage()  
 62  *                            ②printStackTrace()
 63  * 
 64  *   6.在try结构中声明的变量,再出了try结构以后,就不能再被调用
 65  *   
 66  *   7.try - catch-finally结构可以相互嵌套。
 67  *   
 68  *   
 69  *   体会1:使用try-catch-finally处理编译异常时,使得程序在编译时就不在报错,但是运行时仍可能
 70  *   报错,相当于我们使用try - catch -finally 将一个编译时可能出现的异常,延迟到运行时出现。
 71  *
 72  *
 73  *   体会2:开发中,由于运行时异常比较常见,所有我们通常就不针对运行时异常编写try-catch-finally了,
 74  *   针对于编译时异常,我们说一定要考虑异常的处理。
 75  *  
 76  */
 77 public class ExceptionTest2 {
 78     
 79     
 80     @Test
 81     public void test2() {
 82         
 83         try {
 84             
 85                 File file = new File("hello.txt");
 86                 FileInputStream fis = new FileInputStream(file);
 87                 
 88                 int data = fis.read();
 89                 while(data != -1) {
 90                     System.out.println((char)data);
 91                     data = fis.read();
 92                     
 93                 }
 94                 fis.close();
 95         }catch(FileNotFoundException e){
 96             
 97             e.printStackTrace();
 98             
 99         }catch(IOException e) {
100             e.printStackTrace();
101         }
102         
103     }
104     
105     
106     @Test
107     public void test1() {
108         
109         String str = "123"; 
110         str = "abc";
111         int num = 0;
112         try {
113              Integer.parseInt(str);
114             
115             System.out.println("Hello----------1");
116         
117         }catch(NullPointerException e) {
118             System.out.println("出现了空指针异常");
119             
120         }catch(NumberFormatException e) {
121             
122 //            System.out.println("出现 数值转换 异常了");
123             //String getMessage():
124             //System.out.println(e.getMessage());
125             //printStackTrace
126             e.printStackTrace(); 
127             
128         }catch(Exception e) {
129             
130             System.out.println("出现了 异常 ");
131         }
132         
133         //System.out.println(num);  //不可以调用,因为出了 try 结构
134         
135         System.out.println(num);
136         
137         System.out.println("Hello----------2");
138         
139     }
140     
141     
142     
143     
144 
145 }

 

上一篇:Java错题集锦13


下一篇:日期类和异常类