如何在引发时将变量传递给异常并在异常时检索它?

Posted

技术标签:

【中文标题】如何在引发时将变量传递给异常并在异常时检索它?【英文标题】:How to pass a variable to an exception when raised and retrieve it when excepted? 【发布时间】:2011-10-01 09:26:09 【问题描述】:

现在我只有一个空白的异常类。我想知道如何在它被引发时给它一个变量,然后在我在 try...except 中处理它时检索该变量。

class ExampleException (Exception):
    pass

【问题讨论】:

Nice example 如果你想保留默认的消息行为。 【参考方案1】:

给它的构造函数一个参数,将它存储为一个属性,然后在except 子句中检索它:

class FooException(Exception):
    def __init__(self, foo):
        self.foo = foo

try:
    raise FooException("Foo!")
except FooException as e:
    print e.foo

【讨论】:

【参考方案2】:

你可以这样做。

try:
    ex = ExampleException()
    ex.my_variable= "some value"
    raise ex
except ExampleException, e:
    print( e.my_variable )

工作正常。

【讨论】:

虽然这样有效,但通常这样设置对象属性并不是一个好习惯。在__init__ 内执行此操作的公认答案方法更好。

以上是关于如何在引发时将变量传递给异常并在异常时检索它?的主要内容,如果未能解决你的问题,请参考以下文章

从 mysql 数据库中检索图像时引发异常

.NET 5 在引发自定义异常时将内容复制到流时产生错误

我可以在 Gradle 中设置一个变量并在编译时将其传递给 Java 吗?

将单个枚举值传递给 WCF 服务时,protobuf-net 引发有关无效线路类型的异常

如何将变量传递给 UIAlertView 委托?

如何以编程方式将证书导入我的iOS应用程序的钥匙串,并在需要时将身份传递给服务器?