我有一个python类,在其中我打开文件并读取数据。如果不满足某些条件,我将引发一个错误,但在此之前,我通过给对象一个属性来指定错误:self.Error = specification
。但是由于错误引发会撤消try块中的所有内容,因此我无法访问它。这发生在__init__
函数中,因此创建的对象甚至不存在
以下是必要的代码:
class MyClass:
def __init__(self):
#do something
if this_or_that:
self.Error = specification
raise MyCostumError
try:
object = MyClass()
except MyCostumError:
print(object.Error)
我得到:NameError: name 'object' is not defined
请澄清:
我已经定义了MyCostumError
,变量名只是为了更好地理解:我使用了好的名称,它们已经定义好了,我需要澄清,因为在不同的行中可能会出现错误
所以我的问题是:
是否存在类似try/except
的情况,但当出现错误时,它不会撤消所有操作。或者我只是愚蠢,有一个更简单的方法来实现这一点
如果在初始值设定项中引发异常,则不应依赖要创建的对象向调用方获取一些错误信息。这是您应该使用异常传递该信息的地方:
您正试图引用一个不存在的对象。让我解释一下: 如果在尝试初始化对象时发生错误,则不会初始化该对象。因此,如果您试图在它未初始化时访问它,您将得到一个错误
Try/except不会撤消任何操作,只是在发生错误时停止执行某些操作
错误引发不会撤消任何操作。请看一下docs
正如您的输出所述,
object is not defined
,这是因为当您在__init__
中引发错误时,它被视为类的initialosor失败,并且不会返回对象我想这就是你想要的:
相关问题 更多 >
编程相关推荐