<分区>
我一直在搜索我们究竟应该在什么时候创建自定义异常。我找到了这个例子:
public class IncorrectFileExtensionException extends Exception { public IncorrectFileExtensionException () { } public IncorrectFileExtensionException (String message) { super (message); } public IncorrectFileExtensionException (Throwable cause) { super (cause); } public IncorrectFileExtensionException (String message, Throwable cause) { super (message, cause); } }
提供上述自定义异常的真正值(value)是什么? 为什么我不能抛出一个新的 RuntimeException("error occurred", e) 而不是创建上面的自定义异常?我在互联网上看到很多创建类似自定义异常的例子,但我没有了解上述方法的真正好处是什么。
如果我们创建类似
IncorrectFileExtensionException
的东西,那么我们的项目将以许多自定义异常结束。我还发现了这个:
public class MyUncheckedBusinessException extends RuntimeException { private static final long serialVersionUID = -8460356990632230194L; private final ErrorCode code; public MyUncheckedBusinessException(ErrorCode code) { super(); this.code = code; } public MyUncheckedBusinessException(String message, Throwable cause, ErrorCode code) { super(message, cause); this.code = code; } public MyUncheckedBusinessException(String message, ErrorCode code) { super(message); this.code = code; } public MyUncheckedBusinessException(Throwable cause, ErrorCode code) { super(cause); this.code = code; } public ErrorCode getCode() { return this.code; } }
这在某种程度上优于
IncorrectFileExtensionException
,因为我们至少提供了一些错误代码。但是,如果所有自定义异常都像上面那样结束(我的意思是错误代码)怎么办?我的问题是:自定义异常的最佳做法是什么?我们究竟应该在什么时候使用自定义异常?
IncorrectFileExtensionException
真的是一个好方法吗?我们什么时候不应该创建自定义异常?