这里就是我想要做的,我不知道要寻找什么,或者什么设计正确的方法是:设计模式为动态继承
我正在一个异常层次结构的应用。作为其中的一部分,有一些例外有时会致命,其他时间是可以恢复的 - 无论是特定的实例是致命的还是可恢复的,都是在异常本身的运行时确定的。对于组织的目的,我希望能够像做(我在python工作):
try:
mightThrowAnException()
except RecoverableException:
handleThisException()
然后我会碰到这样的:
class MyException(...):
...
凡MyException既可以根据构造函数中发生的情况,将FatalException或RecoverableException作为基类。
我知道我可以有两个单独的异常MyFatalException
和MyRecoverableException
再提高一个或有其他的代码,但有将是一个很大的不同异常的不同类型的错误,它可以从多个地方被上调代码和异常必须做一些事情,比如检查错误日志以确定这个实例是否应该是致命的,所以我认为将所有这些代码放入异常处理程序本身是有意义的。
那么几个问题:
- 鉴于我想要做什么,这是一个很好的方式去了解它,或者是有这样的事情更好的设计?
- 我读过关于类工厂,但我没有看到用这种方法动态更改基类的简单方法,我考虑的其他事情是元类或重写删除方法
__new__()
,我不是真的确定这三种方法各有利弊。这些都是正确的方法还是我需要别的东西?
嗯。您比我更了解您的特定需求,但是对于捕获异常以确定其是否致命的代码,在逐案的基础上进行更合理吗?除了日志以外,你甚至可以处理一个致命的异常?虽然 – Cameron 2011-04-09 04:14:16
我怀疑我已经处理了几年前Jesse在Java项目中描述的类似问题,但总的问题仍然很有趣,它是我们应用程序的电子邮件网关。事实之后添加了很多错误处理和恢复。由于存在各种可能的(通常是泛型的)异常类型,我们最终将它们归类为RetryableException和FastFailException,并且只是将发生的任何错误都包装进去,而不是将该异常声明为抛出异常。它成功了, Java的检查异常使它有点复杂。 – 2011-04-09 04:49:56