|
|
1
1070
也许我错过了这个问题,但为什么不:
编辑: 要覆盖某些内容(或传递额外的参数),请执行以下操作:
这样,您就可以将错误消息的dict传递给第二个参数,并在以后使用
python 3更新:
在python 3+中,您可以使用稍微紧凑的
|
|
|
2
411
除了现代的python例外,您不需要滥用
它将给出一个以
如果您希望从异常中获得更大的灵活性,可以传递一个字典作为参数:
但是,要在
仍然可以将多个项传递给异常并通过元组索引访问它们,但这是
非常沮丧
(甚至有一段时间还打算贬值)。如果您确实需要一条以上的信息,并且上述方法不足以满足您的需要,那么您应该子类
|
|
3
169
这很好,除非您的异常实际上是一种更具体的异常:
或者更好(也许完美),而不是
子类化异常子类从 docs
那意味着
如果
您的异常是一个更具体的异常类型,将该异常子类化,而不是泛型
使用自定义设置自己创建的属性
真的没有必要写你自己的
对最高答案的批评
同样,上面的问题是,为了捕获它,您要么必须指定它的名称(如果在其他地方创建,则导入它),要么捕获异常(但您可能不准备处理所有类型的异常,您应该只捕获准备处理的异常)。类似于下面的批评,但这不是初始化via的方法
它还需要传递两个参数(除了
直截了当——这违反了 Liskov substitutability . 我将演示这两个错误:
相比:
|
|
|
4
42
查看异常在默认情况下的工作方式 VS 使用了更多属性(省略了回溯):
所以你可能想要一种 异常模板 “,作为异常本身,以兼容的方式工作:
使用这个子类可以很容易地做到这一点
如果您不喜欢这种默认的类似元组的表示,只需添加
你将会拥有
|
|
|
5
16
你应该重写
|
|
|
6
6
不,不禁止“留言”。只是被否决了。您的应用程序可以很好地使用消息。当然,你可能会想摆脱折旧错误。 当您为应用程序创建自定义异常类时,其中许多类不仅从异常中创建子类,而且从其他类(如ValueError或类似类)创建子类。然后你必须适应变量的使用。 如果您的应用程序中有许多异常,通常最好为所有这些异常都提供一个通用的自定义基类,这样模块的用户就可以
在这种情况下,你可以
无论如何,你只需要
|
|
|
7
5
从python 3.8开始 (2018) https://docs.python.org/dev/whatsnew/3.8.html )建议的方法仍然是:
请不要忘记记录,为什么需要自定义异常! 如果需要,这是处理具有更多数据的异常的方法:
把它们拿过来,就像:
你也许应该研究用蟒蛇找到解决办法。
|
|
|
8
1
试试这个例子
|