一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - 淺談java異常鏈與異常丟失

淺談java異常鏈與異常丟失

2020-06-15 12:01jingxian JAVA教程

下面小編就為大家帶來一篇淺談java異常鏈與異常丟失。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

1、在java的構造方法中提供了 異常鏈.. 也就是我們可以通過構造方法不斷的將 異常串聯成一個異常鏈...  

之所以需要異常連,是因為處于代碼的可理解性,以及閱讀和程序的可維護性... 

我們知道我們每拋出一個異常都需要進行try catch ...那么豈不是代碼很臃腫...

我們如果可以將異常串聯成一個異常連,然后我們只捕獲我們的包裝 異常,我們知道 RuntimeException 以及其派生類可以不進行try catch 而被jvm自動捕獲并處理..

當然了我們可以自己定義自己的異常類從RuntimeException中派生,然后通過一級一級的包裝,假如異常出現了JWM通過我們的自定義RuntimeException直接輸出 cause

(原因)也就是 我們的異常鏈..因此我們的所有異常也就輸出了,這樣就減少了很多的異常處理的代碼。。。

只有 Throwable ----> Exception  RuntimeException  Error提供了 構造方法實現異常鏈的機制。。。其他異常需要通過initCause來

構造異常連..

下面一段代碼就是異常連的一個簡單示例...可以打印整個程序過程中出現的異常。。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class TestT {
 public static void a() throws Exception{  //拋出異常給上級處理
 try {
  b() ;
 } catch (Exception e) {
  throw new Exception(e) ;
 }
 }
 public static void b()  throws Exception{ //拋出異常給上級處理
 try {
  c() ;
 } catch (Exception e) {
  throw new Exception(e);
 }
 }
 public static void c() throws Exception { //拋出異常給上級處理
 try {
  throw new NullPointerException("c 異常鏈中的空指針異常..") ;
 } catch (NullPointerException e) {
  throw new Exception(e) ;
 }
 }
 public static void main(String[]args){
 try {
  a() ;
 } catch (Exception e) {
  e.printStackTrace();
 }
 
 }
}

2、 try catch ...finally  有個漏洞就是異常缺失..  例如三個try catch  嵌套在一起 ..內部的2個try catch 就可以省略 catch ....直接 try finally ..

看下面代碼  我們發現丟失了2個異常信息

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
public class MyTest {
 public void open() throws Exception{
 throw new Exception(){
  public String toString() {
  return this.getClass().getName()+"CeryImmportException";
  };
 } ;
 }
 public void close() throws Exception{
 
 throw new Exception(){
  public String toString() {
  
  return this.getClass().getName()+"close Exception" ;
  };
 } ;
 }
 public void three() throws Exception{
    throw new Exception(){
     public String toString() {
      
      return this.getClass().getName() + "three" ;
     };
    } ;
 }
 public static void main(String[]agrs){ 
 MyTest mt=new MyTest() ;
 try{
 try{
 try{
  mt.open();
   }finally
 {
   System.out.println("delete open");
   mt.close() ;
 }
 }
 finally{
  System.out.println("delete close");
  mt.three() ;
  
 }
 }catch(Exception ex){
  ex.printStackTrace();
 }
 }
}

以上這篇淺談java異常鏈與異常丟失就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 亚洲欧洲网站 | 好湿好紧太硬了我太爽了网站 | 免费在线观看成年人视频 | 亚洲第一se情网站 | 美女岳肉太深了使劲 | 成人区精品一区二区毛片不卡 | 黑人女性猛交xxxxxⅹxx | 日韩成人在线影院 | 动漫美女被羞羞产奶 | 亚洲成a人片777777久久 | 黑人与老女人做受 | 亚洲 日韩经典 中文字幕 | 国产成人一区二区三区在线视频 | 日本加勒比一区 | 日本 视频 在线 | 国产99精品 | 久久精品国产在热亚洲 | 调教全程肉动画片在线观看 | 女人张开腿让男人桶爽 | 喷奶水榨乳ova动漫无修 | 亚洲视频在线观看免费 | 性插图动态图无遮挡 | 三上悠亚久久国产 | www日本视频| 欧美日韩精品亚洲精品v18 | 欧式午夜理伦三级在线观看 | 亚洲九九九 | 痴mu动漫成年动漫在线观看 | 日本欧美一二三区色视频 | 91肥熟国产老肥熟在线 | 福利一区二区在线观看 | 成人黄页网站 | 亚洲成年人免费网站 | 无码精品AV久久久奶水 | 久久人妻少妇嫩草AV无码 | 99在线精品日韩一区免费国产 | 日韩一区二区三区四区五区 | 91韩国女主播 | 欧美一区二区三 | 513热点网 | 天天综合网网欲色 |