我正在为Exceptions
我目前正在从事的项目实施我自己的一套。该项目依赖于一个带有基本框架异常的核心框架MyFrameworkException
(我也在编写这个框架)。
对于任何给定的项目,我想抛出几种不同类型的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 ) { /*...*/ }
}
在这里,对于发生的任何问题,我总是会抛出MyProjectException
特定的枚举类型。我会提供一些机制,以便可以MyProjectException
基于枚举类型对任何对象执行 switch 语句。
在项目中处理异常的最佳方式是什么,尤其是那些共享公共基础设施的项目?以上两个选项是好的解决方案吗?为什么或者为什么不?还有什么更好的解决方案?