2.Java異常學習

來源:互聯網
上載者:User

標籤:線程   strong   under   ceo   java異常   詳細介紹   代碼   重要   file   

1.Java異常的概念

  • 異常的例子
  • 1.除法就是一個需要捕獲異常的例子,除數又可能是0
  • 異常處理的基本流程如下
  • 一旦發生異常,就使得程式不按照原來的流程繼續的運行下去
  • a.程式拋出異常
      • try{
      •     throw new Exception();
      • }
  • b.捕獲異常
      • catch(Exception e){
        • //例外處理常式  
      • }
  • c.finally代碼塊
  • 必須注意的是:在finally塊中不能拋出異常。
      • finally{
        • //一定會被執行
        • //除非catch中有System.exit(0);會推出Java虛擬機器      
      • }
  • 總結:
  • 1.當程式中拋出一個異常後,程式從程式中導致異常的代碼處跳出,java虛擬機器檢測尋找和try關鍵字匹配的處理該異常的catch塊,如果找到,將控制權交到catch塊中的代碼,然後繼續往下執行程式,try塊中發生異常的代碼不會被重新執行。如果沒有找到處理該異常的catch塊,則執行finally塊代碼。
  • 2.線程的run函數是不能拋出異常的(可以在函數內部捕獲並處理,但是不能向上提交),run函數的異常被提交給uncaughtExceptionHandler處理,後變會詳細介紹
  • 3.出了run函數其他的函數都可以把函數中拋出的異常向上級提交。

 

  • 異常的結構
  •                                 圖1.異常結構(來自參考文獻一)

 

  • 異常分類
  • 1.UnckeckedException--Error(不準確,但是Error確實是在運行時檢查並拋出的)和RunTimeException-------程式中不需要進行補貨
  • 2.checkedException-----IOException、ClassNotFoundException、CloneNotSupportedException
  • 這裡的檢查不檢查針對的是編譯器
  • 常見的RunTimeException-NullPointerException、數組越界、字串越界、算數錯誤(a/b)、參數類型錯誤(Integer.parseInt(“abc"))

 

  • 在聲明方法時候拋出異常

  • public void openFile() throws IOException{//code}
  • 一般函數申明的時候拋出的異常是chenckedException
  • 覆蓋父類某方法的子類方法不能拋出比父類方法更多的異常,所以,有時設計父類的方法時會聲明拋出異常,但實際的實現方法的代碼卻並不拋出異常,這樣做的目的就是為了方便子類方法覆蓋父類方法時可以拋出異常。

 

  • Cathch異常
  • 注意:一個try塊可以處理多種類型的異常(最多隻有一個catch模組會被執行,與switch不相同)
  • 邏輯上一個try後處理多個異常會報錯—下面的代碼會報錯[先catch子類異常,之後再catch父類異常]
  • 因為後一個catch不可能被執行到
      • try{
      •      //code
      • }catch(Exception e){
      • }catch(RuntimeException e){//報錯一定不會被執行到    
      • }

 

  • 自訂異常---就是繼承自已有的異常
  • 最重要的其實是異常的名字
  • class MyException extends Exception{}
  • 預設的建構函式
  • 1.super() 調用基類的建構函式進行初始化
  • 2.super(message)

 參考文獻:http://www.codeceo.com/article/java-exception-learn.html#0-tsina-1-56987-397232819ff9a47a7b7e80a40613cfe1

2.Java異常學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.