java 19 -2 异常以及tr...catch()的方法处理异常

  1 /*
  2   异常:程序出现了不正常的情况。
  3   
  4   举例:今天天气很好,班长出去旅游。骑着自行车,去山里面呼吸新鲜空气。
  5 Error:
  6         问题1:山路塌陷了,班长及时停住了,但是过不去了。严重的问题。(Error,编译处理不了的)
  7 Exception:
  8         问题2:班长出门推自行车,发现气没了,把气吹起来。出发前就应该检查的问题。(非RuntimeException的异常,必须处理)
  9           问题3:班长骑着车在山路上惬意的行驶着,山路两边是有小石子的,中间是平坦的水泥路。(RuntimeException 需要修正代码)
 10               一直在平坦的水泥路上行驶是没有任何问题的,但是呢,他偏偏喜欢骑到小石子上,结果爆胎了。旅游的过程中出现的问题。
 11               no zuo no die。
 12   
 13 程序的异常:Throwable
 14     严重问题:Error   是程序本身无法恢复的严重错误,无法处理
 15     问题:Exception 表示可以被程序捕获并处理的异常错误
 16         编译期问题:不是RuntimeException的异常 必须进行处理的,因为你不处理,编译就不能通过。
 17         运行期问题: RuntimeException  这个问题出现肯定是我们的代码不够严谨,需要修正代码的 18   
 19   如何程序出现了问题,我们没有做任何处理,最终jvm会做出默认的处理。
 20   把异常的名称,原因及出现的问题等信息输出在控制台。
 21   同时会结束程序。
 22  
 23 我们自己如何处理异常呢?
 24   A:try...catch...finally
 25   B:throws 抛出
 26   
 27   try...catch...finally的处理格式:
 28           try {
 29               可能出现问题的代码;
 30           }catch(异常名 变量) {
 31               针对问题的处理;
 32           }finally {
 33               释放资源;
 34           }
 35   
 36   变形格式:
 37           try {
 38               可能出现问题的代码;
 39           }catch(异常名 变量) {
 40               针对问题的处理;
 41           }
 42   
 43   注意:
 44           A:try里面的代码越少越好(因为jvm会针对try里面的代码开辟另外的空间,所以越少越好,省空间)
 45           B:catch里面必须有内容,哪怕是给出一个简单的提示(不然就不是处理问题,而是隐藏问题了)
 46     
 47     A:一个异常
 48   B:二个异常的处理
 49           a:每一个写一个try...catch
 50     b:写一个try,多个catch
 51               try{
 52                   ...
 53               }catch(异常类名 变量名) {
 54                   ...
 55               }
 56               catch(异常类名 变量名) {
 57                   ...
 58               }
 59               ...
 60   
 61         注意事项:
 62                   1:能明确的尽量明确,不要用大的来处理。
 63                   2:平级关系的异常谁前谁后无所谓,如果出现了子父关系,父必须在后面。
 64   
 65     注意:
 66           一旦try里面出了问题,就会在这里把问题给抛出去,然后和catch里面的问题进行匹配,
 67           一旦有匹配的,就执行catch里面的处理,然后结束了try...catch
 68           继续执行后面的语句。
 69  */
 70 
 71  public class ExceptionDemo2 {
 72     public static void main(String[] args) {
 73         // method1();
 74 
 75         // method2();
 76 
 77         // method3();
 78 
 79         method4();
 80     }
 81 
 82     public static void method4() {
 83         int a = 10;
 84         int b = 0;
 85         int[] arr = { 1, 2, 3 };
 86 
 87         // 爷爷在最后
 88         try {
 89             System.out.println(a / b);
 90             System.out.println(arr[3]);
 91             System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
 92         } catch (ArithmeticException e) {
 93             System.out.println("除数不能为0");
 94         } catch (ArrayIndexOutOfBoundsException e) {
 95             System.out.println("你访问了不该的访问的索引");
 96         } catch (Exception e) {
 97             System.out.println("出问题了");
 98         }
 99 
100         // 爷爷在前面是不可以的
101         // try {
102         // System.out.println(a / b);
103         // System.out.println(arr[3]);
104         // System.out.println("这里出现了一个异常,你不太清楚是谁,该怎么办呢?");
105         // } catch (Exception e) {
106         // System.out.println("出问题了");
107         // } catch (ArithmeticException e) {
108         // System.out.println("除数不能为0");
109         // } catch (ArrayIndexOutOfBoundsException e) {
110         // System.out.println("你访问了不该的访问的索引");
111         // }
112 
113         System.out.println("over");
114     }
115 
116     // 两个异常的处理
117     public static void method3() {
118         int a = 10;
119         int b = 0;
120         int[] arr = { 1, 2, 3 };
121 
122         try {
123             System.out.println(arr[3]);
124             System.out.println(a / b);
125             // System.out.println(arr[3]);
126         } catch (ArithmeticException e) {
127             System.out.println("除数不能为0");
128         } catch (ArrayIndexOutOfBoundsException e) {
129             System.out.println("你访问了不该的访问的索引");
130         }
131 
132         System.out.println("over");
133     }
134 
135     // 两个异常
136     public static void method2() {
137         int a = 10;
138         int b = 0;
139         try {
140             System.out.println(a / b);
141         } catch (ArithmeticException e) {
142             System.out.println("除数不能为0");
143         }
144 
145         int[] arr = { 1, 2, 3 };
146         try {
147             System.out.println(arr[3]);
148         } catch (ArrayIndexOutOfBoundsException e) {
149             System.out.println("你访问了不该的访问的索引");
150         }
151 
152         System.out.println("over");
153     }
154 
155     // 一个异常
156     public static void method1() {
157         // 第一阶段
158         int a = 10;
159         // int b = 2;
160         int b = 0;
161 
162         try {
163             System.out.println(a / b);
164         } catch (ArithmeticException ae) {
165             System.out.println("除数不能为0");
166         }
167 
168         // 第二阶段
169         System.out.println("over");
170     }
171 }
何事都只需坚持.. 难? 维熟尔。 LZL的自学历程...只需坚持
原文地址:https://www.cnblogs.com/LZL-student/p/5914481.html