廢話少說,今天來看看Java的反常處理,
Java的反常
議論Java的反常之前,先看看反常處理程式能帶來什么優點?明顯的優點是下降過錯處理代碼的復雜度,Java中的反常處理機制能幫助開發者簡化處理反常的本錢,假如產生反常了能夠有兩種方式處理,第一種為捕捉反常并測驗康復,比方網路反常,超時反常等,另一種便是向高層呼叫拋出反常,
Java中的反常處理機制便是用要害字try-catch-finally,throw或許throws處理,下面就分別說明使用方:
Try代碼塊用于監聽程式是否呈現問題,也便是監聽有可能產生問題的代碼塊Catch捕捉反常,能夠指定特定反常進行捕捉Finally要害字后面的代碼塊,在try-catch后總會執行,用來封閉檔案,封閉連接等,Throw拋出反常,假如咱們不想處理這個反常,能夠通過throw拋出,也能夠轉換成新的反常拋出Throws給辦法簽名指定可能拋出的反常,Java的反常的基類是Throwable,這個類完成了Serializable介面,因此是能夠序列化的,而且提供了存盤和列印執行反常堆疊的資訊,
Throwable有兩個子類完成類,一個是Error,另一個便是Exception,Error代表不行康復的過錯,屬于JVM內部的過錯,比方體系記憶體溢位了;Exception表明體系呈現了一些問題,但是還不至于體系完全不行用,通過重試或許改動輸入引數有能夠康復的反常,有包括查看反常和非查看反常,
查看反常(ChekedEcxception):查看反常承繼于Exception,這類反常假如不處理在編譯期間就會報錯,比方資料庫連接反常DataAccessException,檔案不存在反常FileNotFoundException,IO反常IOException等,非查看反常:程式運轉中產生的反常,在程式的編譯時分能夠疏忽的反常,比方RuntimeException,或許承繼與RuntimeException的反常,
查看和非查看反常
以下是一個讀取檔案的例子,在讀取檔案的時分會產生FileNotFoundExcepton和IOException,咱們都進行了捕捉,最終在finally中封閉了翻開的檔案,
一個自界說反常實體
自界說反常
在開發中發現JDK提供的反常無法滿足現在的需求,能夠通過集成已有的反常類來自界說反常,
在自界說反常的時分,是界說查看反常仍是非查看反常?以下是個人見解,
假如一個問題需求顯現的處理,比方呼叫其他體系介面的時分,服務不行用,就可界說為查看反常,自界說的查看反常是要求在編程的時分有必要處理的,
業務的反常通過通過承繼RuntimeException來界說非查看反常,比方引數過錯,成果找不到等,這類反常都是在運轉期間產生的,咱們不用在呼叫的地方顯現的處理,能夠在一個地方統一的處理,
下面就定一個查看引數的反常類承繼于RuntimeException,界說一個過錯code用來記載過錯的代碼,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/157142.html
標籤:Java
