1. 程式人生 > >java異常處理之自定義異常類

java異常處理之自定義異常類

    在實際開發中,開發人員往往需要定義一些異常類用於描述自身程式中的異常資訊,以區分其他程式的異常資訊。就需要自定義異常類。
   
    實現自定義異常類的方法如下:
    1、類java.lang.Throwable是所有異常類的基類,它包括兩個子類:Exception和Error,Exception類用於描述程式能夠捕獲的異常,如ClassNotFoundException。Error類用於指示合理的應用程式不應該試圖捕獲的嚴重問題,如虛擬機器錯誤VirtualMachineError
    2、自定義異常類可以繼承Throwable類或者Exception,而不要繼承Error類。自定義異常類之間也可以有繼承關係
    3、需要為自定義異常類設計構造方法,以方便構造自定義異常物件。
   
    例項演示

package book.exception;
/**
 * 自定義異常類
 * 第一種定義方式,繼承Exception類
 * 
@author joe
 *
 
*/


publicclass MyFirstException extends Exception {
    
    
/**
     * 序列化ID
     
*/

    
privatestaticfinallong serialVersionUID =1L;

    
public MyFirstException() {
        
super();
    }

    
    
public MyFirstException(String msg) 
{
        
super(msg);
    }

    
    
public MyFirstException(String msg, Throwable cause) {
        
super(msg, cause);
    }

    
    
public MyFirstException(Throwable cause) {
        
super(cause);
    }


}
package book.exception;
/**
 * 自定義異常類
 * 第二種定義方法,繼承Throwable類
 * 
@author joe
 *
 
*/


publicclass MySecondException 
extends Throwable {

    
/**
     * 
     
*/

    
privatestaticfinallong serialVersionUID =1L;

    
public MySecondException() {
        
super();
    }

    
    
public MySecondException(String msg) {
        
super(msg);
    }

    
    
public MySecondException(String msg, Throwable cause) {
        
super(msg, cause);
    }

    
    
public MySecondException(Throwable cause) {
        
super(cause);
    }

}
package book.exception;
/**
 * 自定義異常類的使用
 * 
@author joe
 *
 
*/

publicclass TestMyException {

    
publicstaticvoid firstException() throws MyFirstException {
        
thrownew MyFirstException(""firstException()" method occurs an exception! ");
    }

    
    
publicstaticvoid secondException() throws MySecondException {
        
thrownew MySecondException(""secondException()" method occurs an exception! ");
    }

    
    
publicstaticvoid main(String[] args) {
        
try{
            TestMyException.firstException();
            TestMyException.secondException();
        }
catch(MyFirstException e1) {
            System.out.println(
"Exception: "+ e1.getMessage());
            e1.printStackTrace();
        }
catch(MySecondException e2) {
            System.out.println(
"Exception: "+ e2.getMessage());
            e2.printStackTrace();
        }

    }

}

輸出結果:

Exception: "firstException()" method occurs an exception! 
book.exception.MyFirstException: 
"firstException()" method occurs an exception! 
    at book.exception.TestMyException.firstException(TestMyException.java:
10)
    at book.exception.TestMyException.main(TestMyException.java:
19)

原始碼分析:
    當一個try塊後面跟著多個catch塊時,如果發生的異常匹配第一個catch塊的引數,便將異常處理權利交給第一個catch塊,如果不匹配,便與第二個catch塊進行匹配,依次下去,如果到最後依然無法匹配該異常,便說明該方法無法處理髮生的異常,需要在方法宣告中新增一條throws語句,將異常丟擲。
    因此,在有多個catch塊的情況下,如果每次處理的異常型別之間具有繼承關係,應該首先捕獲子類異常,再捕獲父類異常,比如:MySecondException繼承MyFirstException,那麼最好將catch(MySecondException e2)放在前面。

相關推薦

java異常處理定義異常

    在實際開發中,開發人員往往需要定義一些異常類用於描述自身程式中的異常資訊,以區分其他程式的異常資訊。就需要自定義異常類。        實現自定義異常類的方法如下:    1、類java.lang.Throwable是所有異常類的基類,它包括兩個子類:Exceptio

Java IO流中的異常處理以及定義異常例項

文章目錄 異常 自定義異常例項 finally中特殊情況例項 異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進

SpringMVC中的異常處理(全域性異常處理定義異常進行統一處理)

前言: WEB開發中,總會有一些不可預料的錯誤,對於一些課預測的異常,我們可以自定義一個異常類,然後再載入個全域性異常處理器,對系統中出現的異常進行統一的處理。 注意:當你在Springmvc配置檔案中配置全域性異常處理器的時候,只要如下配置即可: <!

4、php的錯誤異常處理定義異常

一、php自帶的異常處理類: <?php class Exception { protected $message; // 異常資訊 protected $code; //

Java IO流中的異常處理以及定義異常例項

異常 1、 Throwable類  a) 嚴重問題:Error,比如說記憶體不夠,一般程式中不進行處理  b) 問題:Exception   i. 編譯期問題:不是RunTimeException的異常,不處理編譯不能通過,因此必須處理   ii. 執行期問題

c#基礎異常處理定義異常

一、什麼是c#中的異常?         異常是程式執行中發生的錯誤,異常處理是程式的一部分。c#中的異常類主要是直接或者間接的派生於 System.Exception類 ,也就是說System.Exception類是所有預定義的系統異常的基類。錯誤的出現並不總是編寫

Java程式設計中Springboot的異常處理定義異常處理教程

元旦很快就到來了,提前祝各位元旦快樂,今天給大家分享一個工作中必用一個知識點,就是在Java開發中使用列舉構建自定義異常並應用於springboot的異常處理器。 開始之前我先把這個案例的結構大致說明一下: 1、使用idea建立一個springboot的Gradle/Maven專案,引入we

js 系統教程-17-js 語法異常處理-error,定義異常,try catch finally

目錄 錯誤處理機制 Error 例項物件 JavaScript 解析或執行時,一旦發生錯誤,引擎就會丟擲一個錯誤物件。JavaScript 原生提供Error建構函式,所有丟擲的錯誤都是這個建構函式的例項。 var err = new

spring boot 全域性異常處理定義異常

全域性異常處理:定義一個處理類,使用@ControllerAdvice註解。@ControllerAdvice註解:控制器增強,一個被@Component註冊的元件。配合@ExceptionHandler來增強所有的@requestMapping方法。例如:@Exceptio

Java 異常處理定義異常處理

異常處理分為兩種: 1、系統異常處理 2、自定義異常處理 下面分別來講解小編對這個的理解 1、系統異常處理 public class Abnormal { public static void main(String args[]) { P

異常處理定義異常

自定義異常類的一般形式為: class MyException extends exception{..................} 在自定義異常中,根據需要定義的屬性和方法,或則過載父類的屬性和方法,使其能夠體現相應的異常資訊。 自定義異常類例項,定義銀行賬戶類

10.異常處理定義異常、斷言

類型 出現 color spa 同時 就是 put exception valid 什麽是異常: 當程序遭遇某些非正常問題的時候就會拋出異常:比如int()只能處理能轉化成int的對象,如果傳入一個不能轉化的對象就會報錯並拋出異常 常用的異常有: ValueError :

SSM-SpringMVC-25:SpringMVC異常頂級定義異常解析器

post 程序猿 org instance value username 掃描 位置 服務器 ------------吾亦無他,唯手熟爾,謙卑若愚,好學若饑------------- 上篇博客相信大家也看到了,自定義異常,用了SimpleMappingExc

Springboot的異常處理定義異常

園友們好,元旦很快就到來了,提前祝各位園友們元旦快樂,今天給大家分享一個工作中必用一個知識點,就是使用列舉構建自定義異常並應用於springboot的異常處理器。開始之前我先把這個案例的結構大致說明一下: 1、使用idea建立一個springboot的Gradle/Maven專案,引入web模組即可(由於案

springboot下全域性異常處理定義異常以及定義返回值

1.介紹    全域性異常處理,是mvc的一個新特性,避免大量的重複程式碼    自定義異常 , 方便使用,丟擲自己定義好的異常,配合全域性異常處理使用,效果更佳    自定義返回值,類似異常,返回自己定義的返回值 2.全域性異常處理重點知識 1. 新建一

應用程式開發——異常異常分類、常見異常異常處理定義異常

異常分類:(Throwable:所有異常和錯誤的父類)●  Error:JVM無法解決的嚴重問題(JVM系統內部錯誤、資源耗盡等。一般不編寫針對性的程式碼進行處理)●  Exception:程式設計錯誤或偶然的外在因素導致的一般性問題,可以使用針對性的程式碼進行處理-----

Laravel加密解密/日誌/異常處理定義錯誤

文件中 例如 tom 處理器 crypt return cat 情況 而不是 一.加密解密 1.加密Crypt::encrypt($request->secret) 2.解密try {   $decrypted = Crypt::decrypt($encryptedV

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常型別自定義異常類,這裡我們建立一個自定義系統異常,如果controller、service、dao丟擲此類異常說明是系統預期處理異常資訊。

springmvc在處理請求過程中出現異常資訊交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和執行時異常RuntimeException,前者通過捕獲異常從而獲取異常資訊,後者主要通過規範程式碼開發、測試通過手段減少執

springmvc在處理請求過程中出現異常信息交由異常處理器進行處理自定義異常處理器可以實現一個系統的異常處理邏輯。為了區別不同的異常通常根據異常類自定義異常類,這裏我們創建一個自定義系統異常,如果controller、service、dao拋出此類異常說明是系統預期處理異常信息。

ansi req -type this spring 進行 name ext code springmvc在處理請求過程中出現異常信息交由異常處理器進行處理,自定義異常處理器可以實現一個系統的異常處理邏輯。 1.1 異常處理思路 系統中異常包括兩類:預期異常和運行時異常Ru

Java異常定義異常

哎呀,媽呀,又出異常了!俗話說:“程式碼虐我千百遍,我待程式碼如初戀”。 小Alan最近一直在忙著工作,已經很久沒有寫寫東西來加深自己的理解了,今天來跟大家聊聊Java異常。Java異常的體系什麼的,理論知識啥的我就懶得去BB太多了,是個搞Java開發的都知道,只是可能理解的不深,這個大家可以自己多看看資料