程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 淺談java異常鏈與異常喪失

淺談java異常鏈與異常喪失

編輯:關於JAVA

淺談java異常鏈與異常喪失。本站提示廣大學習愛好者:(淺談java異常鏈與異常喪失)文章只能為提供參考,不一定能成為您想要的結果。以下是淺談java異常鏈與異常喪失正文


1、在java的結構辦法中供給了 異常鏈.. 也就是我們可以經由過程結構辦法赓續的將 異常串連成一個異常鏈...  

之所以須要異常連,是由於處於代碼的可懂得性,和浏覽和法式的可保護性... 

我們曉得我們每拋出一個異常都須要停止try catch ...那末豈不是代碼很癡肥...

我們假如可以將異常串連成一個異常連,然後我們只捕捉我們的包裝 異常,我們曉得 RuntimeException 和其派生類可以不停止try catch 而被jvm主動捕捉並處置..

固然了我們可以本身界說本身的異常類從RuntimeException中派生,然後經由過程一級一級的包裝,假設異常湧現了JWM經由過程我們的自界說RuntimeException直接輸入 cause

(緣由)也就是 我們的異常鏈..是以我們的一切異常也就輸入了,如許就削減了許多的異常處置的代碼。。。

只要 Throwable ----> Exception  RuntimeException  Error供給了 結構辦法完成異常鏈的機制。。。其他異常須要經由過程initCause來

結構異常連..

上面一段代碼就是異常連的一個簡略示例...可以打印全部法式進程中湧現的異常。。

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個異常信息

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異常鏈與異常喪失就是小編分享給年夜家的全體內容了,願望能給年夜家一個參考,也願望年夜家多多支撐。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved