2016-04-16 26 views
0

Kann mich jemand führen Soll ich Exception oder RuntimeException verlängern?Benutzerdefinierte Ausnahmeklasse - Soll ich Runtime Exception oder Exception verlängern?

Normalerweise ist es für Validierungen, unerwartete Ausnahmen verwendet wird, Benutzerdefinierte Ausnahme, Raise, wenn Business-Logik usw. schlägt fehl

Unten ist meine benutzerdefinierte Ausnahmeklasse.

/** 
* The class <code>BaseException</code> is a custom exception class. 
* @author Pratiyush Kumar Singh 
*/ 
public class BaseException extends Exception { 

    static final long serialVersionUID = -3387516993124229948L; 

    /** 
    * Constructs a new exception. 
    */ 
    public BaseException() { 
     super(); 
    } 

    /** 
    * Constructs a new exception with the specified detail message. 
    * @param message - It contains the error message. 
    */ 
    public BaseException(String message) { 
     super(message); 
    } 

    /** 
    * Constructs a new exception with the specified detail message. 
    * @param message - It contains the error message. 
    * @param cause - Instance of Throwable. 
    */ 
    public BaseException(String message, Throwable cause) { 
     super(message, cause); 
    } 

} 

Antwort

1

Einige Leute sagen, dass benutzerdefinierte Ausnahmen ein Code-Geruch sind. Du solltest sicherlich nicht zu viele haben.

Der ursprüngliche Standard für Java war geprüfte Ausnahmen. Designer reagierten gegen die C-Rückkehrcode-Konvention, weil ihnen die Idee, dass Entwickler sie ignorieren könnten, nicht gefiel. Geprüfte Ausnahmen müssen abgefangen und behandelt werden.

C# ging in die andere Richtung und bevorzugte unkontrollierte Ausnahmen. Littering Code mit try/catch erwies sich als umständlich.

Sie sollten basierend auf Ihren Anforderungen entscheiden, ob Sie Exception (aktiviert) oder RuntimeException (nicht aktiviert) erweitern möchten. Fragen Sie sich: Soll ich Entwickler dazu zwingen, mit dieser Situation umzugehen?

Oder Sie können Mode folgen und sie alle unkontrolliert machen.

Ich empfehle, dass Sie vorhandene Klassen aus dem JDK so oft wie möglich verwenden.

0

Der Compiler erfordert keine RuntimeException Clients, während es für Exception tut. Daher sollten Sie von Exception ausgehen, wenn Sie Clients zwingen möchten, Code zu schreiben, der versucht, von der Bedingung wiederherzustellen, oder von RuntimeException, wenn Sie dies nicht tun.

Unten sehen Sie ein Beispiel, wie Clients behandelt werden müssten, wenn Sie nicht von RuntimeException ausgingen.

void foo() throws MyException(); // throw up the stack 

void foo() { // handle exception with try-catch 
    try { 
    } 
    catch (MyException e) { 
    } 
}