1 package com.fu.java5;
 2 
 3 import org.junit.jupiter.api.Test;
 4 
 5 /**
 6  * 一、异常的处理;抓抛模型
 7  * 过程一:“抛” :程序在正常执行的过程中,一旦出现异常,就会在异常代码出生成一个对应异常的对象。
 8  *              并将此对象抛出。
 9  *              一旦抛出对象以后,其后的代码就不在执行。
10  *        关于异常对象的产生:① 系统自动生成的异常对象
11  *                         ② 手动生成异常对象并抛出(throw)
12  *
13  * 过程二:“抓” :可以理解为异常的处理方式:①try-catch-finally   ② throws
14  *
15  * 二、try-catch-finally的使用
16  * try{
17  *     //可能出现异常的代码
18  *
19  * }catch(异常类型1 变量名1){
20  *     //处理异常的方式1
21  * }catch(异常类型2 变量名2){
22  *    //处理异常的方式2
23  * }catch(异常类型3 变量名3){
24  *    //处理异常的方式3
25  * }
26  * ....
27  * finally{
28  *     //将一定会执行的代码放在这里
29  * }
30  *
31  * 说明:
32  * 1.finally是可选的。
33  * 2.使用try将可能出现异常的代码包装起来,在执行过程中,一旦出现异常,就会生成一个对应异常类的对象,根据此对象的类型,据此
34  *   对象的类型,去catch中进行匹配。
35  * 3.一旦try中的异常对象匹配到某一个catch时,就进入catch中进行处理。一旦处理完成,就跳出
36  *   前的try-catch结构(在没有写finally的情况)。继续执行其后的代码
37  * 4.catch中的异常类型如果没有子父类关系,则谁声明在上,谁声明在下,无所谓。
38  *   catch中的异常类型如果满足子父类关系,则要求子类一定声明在父类上面,否则报错。
39  * 5.常用的异常处理的方式:① String getMessage()   ②printStackTrace()
40  * 6.在try结构中声明的变量,在出了try结构以后,就不能再被调用
41  *
42  *体会1:使用try-catch-finally处理编译时异常,使得程序再编译时就不再报错,但是运行时仍可能报错,相当于我们使用try-catch--finally结构
43  *     将一个编译可能出现异常的结构延迟到运行时出现。
44  * 体会2:开发中,由于运行时异常比较常见,所以我们通常就不针对运行时异常编写try-catch-finally了。
45  *       针对编译时异常,我们就一定要考虑异常的处理。
46  */
47 public class ExceptionTest1 {
48     @Test
49     public void test1(){
50         int[] arr = null;
51         try {
52             System.out.println(arr[3]);
53             System.out.println("hello----1");
54         }catch (NullPointerException e){
55 //            System.out.println("出现空指针异常,不要着急...");
56             //String getMessage();
57 //            System.out.println(e.getMessage());
58             //printStackTrace
59             e.printStackTrace();
60         }catch(NumberFormatException e){
61             System.out.println("出现数值转换异常,不要着急...");
62         }catch(Exception e){
63             System.out.println("出现异常,不要着急...");
64         }
65             System.out.println("hello----2");
66 
67     }
68 }

 

 1 package com.fu.java5;
 2 
 3 import org.junit.jupiter.api.BeforeEach;
 4 import org.junit.jupiter.api.Test;
 5 
 6 /**
 7  * try-catch-finally中finally的使用:
 8  * 1.finally是可选的
 9  * 2.finally中声明的是一定会被执行的代码。即使catch中又出现异常了,try中有return语句,catch中有return语句等情况。
10  * 3.像数据库连接、输入输出流、网络编程Socket等资源,JVM是不能自动回收的,我们需要自己手动的进行资源的释放,此时的
11  *   资源释放,就需要声明在finally中。
12  *
13  *
14  */
15 public class FinallyTest {
16 
17     @Test
18     public void test2(){
19             System.out.println();
20     }
21 
22     @Test
23     public void test1(){
24         try {
25         int a = 10;
26         int b = 0;
27         System.out.println(a/b);
28         }catch (ArithmeticException e){
29             e.printStackTrace();
30         }finally {
31             System.out.println("hello");
32         }
33     }
34 }

 

此为本人学习笔记,若有错误,请不吝赐教