Jes*_*hen 2 python oop design-patterns metaprogramming exception
这是我正在尝试做的事情,我不确定要寻找什么或者设计它的正确方法是:
我正在为应用程序开发一个异常层次结构.作为其中的一部分,有一些例外有时是致命的,而其他时间是可恢复的 - 特定实例是致命的还是可恢复的是在运行时在异常本身中确定的.出于组织的目的,我希望能够做类似的事情(我在python中工作):
try:
mightThrowAnException()
except RecoverableException:
handleThisException()
Run Code Online (Sandbox Code Playgroud)
然后我会有类似的东西:
class MyException(...):
...
Run Code Online (Sandbox Code Playgroud)
其中MyException可以将FatalException或RecoverableException作为基类,具体取决于构造函数中发生的情况.
我知道我可以有两个单独的例外MyFatalException和MyRecoverableException再提高一个或有其他的代码,但有将是一个很大的不同类型的错误,这可能从代码的多个地方被提出不同的异常,异常必须做一些事情,比如检查错误日志以确定这个实例是否应该是致命的,所以我认为将所有这些代码放入异常处理程序本身是有意义的.
所以有几个问题:
__new__()方法而且我不确定是什么这三种方法各有利弊.这些都是正确的方法还是我还需要别的东西?我的建议是将异常内容与其含义分开.同一个异常可以在不同的地方有不同的含义!
您的问题建议将异常转换为具有检查日志等高级功能的"有感知"对象.但这不是例外的意图.例外应该是轻量级数据对象,尽可能多地提供有关所发生事件的信息,但不能自行确定应该采取哪些措施.捕获代码可以做到这一点,正如我上面所说,完全可以想象某些异常将在某个地方以某种方式处理,而在另一些地方以其他方式处理.