自定义异常:通过许多子类或由枚举支持的单个类进行区分?
我希望为我目前正在从事的项目实现我自己的一套。该项目依赖于一个具有基本框架例外的核心框架(我也在编写此框架)。Exceptions
MyFrameworkException
对于任何给定的项目,我想抛出几种不同类型的项目,我无法决定是使用多个子类还是使用某种形式的a作为构造函数参数的单个子类。Exceptions
Enum
在这两种情况下,我都有:
public class MyFrameworkException extends Exception { /*...*/ }
选项 1:
public class MyProjectBaseException extends MyFrameworkException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
public class SpecificExceptionType1 extends MyProjectBaseException { /*...*/ }
然后,在整个项目中,我会为发生的任何问题抛出特定的异常。
选项 2:
public class MyProjectException extends MyFrameworkException {
public static enum Type {
SpecificType1, SpecificType2, SpecificType3
}
public MyProjectException( Type type ) { /*...*/ }
}
在这里,我总是会为发生的任何问题抛出特定的枚举类型。我会提供一些机制,以便可以根据类型枚举对任何语句执行 switch 语句。MyProjectException
MyProjectException
处理项目中异常的最佳方法是什么,尤其是那些共享公共基础结构的项目?上述两个选项是好的解决方案吗?为什么或为什么不呢?还有什么更好的解决方案?