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

Java   手动抛异常_变量名