我有一个抽象类 Camera。有一些派生类可以处理特定类型的相机。每种类型的相机都有自己的异常,而其中一些根本没有异常,它们返回一个错误类型的枚举。
我想知道你们是否同意这个实现:
所有特定类都会处理它们的异常(或枚举错误类型)并将其转换为通用异常(例如:CameraException : Exception)并抛出。
这是一个好的/推荐的实现方式吗?
最佳答案
您可能希望将错误概念统一为一个通用的 CameraException
类层次结构。如果目标是抽象相机实现,您应该将错误也抽象到这个通用异常框架中。
如果您只有特定于实现的异常,那么您的类的用户将很难理解 CameraException
的确切含义。不分析细节就想说。
我建议提供一个逻辑异常框架,然后您的依赖于实现的相机逻辑将解释代码,然后创建正确的相应逻辑相机异常。
例如,如果您尝试对相机的内存、卡执行操作,但没有插入,则抛出 NoMemoryCardInCameraException
可以继承自 CameraException
.
如果您真的希望这些提供者的详细信息可用,您可以在 CameraException
中拥有一个属性称为 Detail
或者是抽象类或 Dictionary
的东西具有实现特定细节的键值对。这样,如果有人真的想从提供者那里深入了解实际的错误代码、枚举等。
您的目标应该是让普通用户能够捕获逻辑异常并适本地处理它们,而无需需要了解具体情况。
希望能澄清一点...
关于c# - 自定义异常类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7448756/