任何人都可以指导我是否应该扩展Exception或RuntimeException?
通常,它用于验证,意外异常,自定义异常,如果业务逻辑失败则提升等。
以下是我的自定义异常类。
/**
* 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);
}
}
答案 0 :(得分:1)
有些人说自定义异常是代码味道。你当然不应该有太多。
Java的原始默认值是已检查的异常。设计师反对C返回代码约定,因为他们不喜欢开发人员可以忽略它们的想法。已检查的异常需要被捕获和处理。
C#走向另一个方向,并首选未经检查的例外。发现使用try / catch的乱抛垃圾代码很麻烦。
您应根据自己的要求决定是否延长Exception
(已选中)或RuntimeException
(未选中)。问问自己:我应该强迫开发人员处理这种情况吗?
或者你可以追随时尚,让它们都不受控制。
我建议您尽可能使用JDK中的现有类。
答案 1 :(得分:0)
编译器不要求客户端处理RuntimeException,而是Exception
。因此,如果要强制客户端编写尝试从条件中恢复的代码,则应从Exception扩展,如果不是,则应从RuntimeException扩展。
下面是一个示例,说明如果您没有从RuntimeException扩展,客户端将如何处理。
void foo() throws MyException(); // throw up the stack
void foo() { // handle exception with try-catch
try {
}
catch (MyException e) {
}
}