Java基礎-異常-總結參考

來源:互聯網
上載者:User

標籤:

-----參考於畢向東課程文檔
異常:
是什嗎?是對問題的描述。將問題進行對象的封裝。
------------
異常體系:
    Throwable
        |--Error
        |--Exception
            |--RuntimeException

異常體系的特點:異常體系中的所有類以及建立的對象都具備可拋性。
                也就是說可以被throw和throws關鍵字所操作。
                只有異常體系具備這個特點。


--------------
throw和throws的用法:

throw定義在函數內,用於拋出異常對象。
throws定義在函數上,用於拋出異常類,可以拋出多個用逗號隔開。


當函數內容有throw拋出異常對象,並未進行try處理。必須要在函數上聲明,都在編譯失敗。
注意,RuntimeException除外。也就說,函數內如果拋出的RuntimeExcpetion異常,函數上可以不用聲明。
--------------


如果函式宣告了異常,調用者需要進行處理。處理方法可以throws可以try。

異常有兩種:
    編譯時間被檢測異常
        該異常在編譯時間,如果沒有處理(沒有拋也沒有try),編譯失敗。
        該異常被標識,代表這可以被處理。
    運行時異常(編譯時間不檢測)
        在編譯時間,不需要處理,編譯器不檢查。
        該異常的發生,建議不處理,讓程式停止。需要對代碼進行修正。

 

--------------
異常處理語句:
try
{
    需要被檢測的代碼;
}
catch ()
{
    處理異常的代碼;
}
finally
{
    一定會執行的代碼;
}

有三個結合格式:
1.    try
    {
       
    }
    catch ()
    {
    }

2.    try
    {
       
    }
    finally
    {
   
    }


3.    try
    {
       
    }
    catch ()
    {
    }
    finally
    {
   
    }

 

注意:
1,finally中定義的通常是 關閉資原始碼。因為資源必須釋放。
2,finally只有一種情況不會執行。當執行到System.exit(0);fianlly不會執行。

--------------

自訂異常:
    定義類繼承Exception或者RuntimeException
    1,為了讓該自訂類具備可拋性。
    2,讓該類具備操作異常的共性方法。

    當要定義自訂異常的資訊時,可以使用父類已經定義好的功能。
    異常異常資訊傳遞給父類的建構函式。
    class MyException extends Exception
    {
        MyException(String message)
        {
            super(message);
        }
    }

自訂異常:按照java的物件導向思想,將程式中出現的特有問題進行封裝。
--------------


異常的好處:
    1,將問題進行封裝。
    2,將正常流程代碼和問題處理代碼相分離,方便於閱讀。


異常的處理原則:
    1,處理方式有兩種:try 或者 throws。
    2,調用到拋出異常的功能時,拋出幾個,就處理幾個。
        一個try對應多個catch。
    3,多個catch,父類的catch放到最下面。
    4,catch內,需要定義針對性的處理方式。不要簡單的定義printStackTrace,輸出語句。
        也不要不寫。
        當捕獲到的異常,本功能處理不了時,可以繼續在catch中拋出。
        try
        {
            throw new AException();
        }
        catch (AException e)
        {
            throw e;
        }

        如果該異常處理不了,但並不屬於該功能出現的異常。
        可以將異常轉換後,在拋出和該功能相關的異常。

        或者異常可以處理,當需要將異常產生的和本功能相關的問題提供出去,
        當調用者知道。並處理。也可以將捕獲異常處理後,轉換新的異常。
        try
        {
            throw new AException();
        }
        catch (AException e)
        {
            // 對AException處理。
            throw new BException();
        }

        比如,匯款的例子。

   
異常的注意事項:
    在子父類覆蓋時:
    1,子類拋出的異常必須是父類的異常的子類或者子集。
    2,如果父類或者介面沒有異常拋出時,子類覆蓋出現異常,只能try不能拋。

 

參閱
ExceptionTest.java 老師用電腦上課
ExceptionTest1.java 圖形面積。

 

 


       

 

 

 

 

class 
{
    public static void main(String[] args)
    {
        int x = 0;
        try
        {
            x = 4;
        }
        catch ()
        {
        }
        finally
        {
            System.out.println("x="+x);
        }
       
    }
}

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.