gpt4 book ai didi

python 从 if 语句和 try-except 调用自定义异常

转载 作者:行者123 更新时间:2023-11-28 16:43:56 25 4
gpt4 key购买 nike

所以,我创建了一个自定义异常,我想用两种不同的方式调用它(if/else 语句和 try/except 语句)。这是自定义异常:

class CustomException(Exception):   
def __init__(self, value=None, *args, **kwargs):
self.parameter = value
for key, value in kwargs.items():
setattr(self, key, value)

for key, value in self.__dict__.items():
print "%s => %s" % ( key, value )

def __str__(self):
return repr(self.parameter)

这是我想要实现自定义异常的方式:

try:
if something:
#make an error
;lsdfj
else:
raise CustomException('this is my custom message', file='somefile.txt', var2='something')
except Exception, e:
raise CustomException(e)

我认为,我的问题有两方面:

1:当在try/except block 中抛出标准的NameError时(由于;lsdfj),我想通过CustomExceptions 一些额外的参数,比如'file',就像if/else 实现一样;我该怎么做?

2:当引发自定义异常时(if/else 语句为 false),CustomExceptions 类最终被调用两次,因为我在 if/else block 中引发它,然后它在 except: 部分。我不知道如何解决这个问题。

因此,在上述情况下,我想在 if-statement 不为真时调用 CustomException,并且在代码块内抛出标准异常时调用它。 . 但目前,if something: 的计算结果为 false,然后 CustomException 将被引发两次...

所以我希望在我的代码中单方面使用自定义异常来满足 if/else 条件和标准 python 异常......

我知道这个解释很复杂,但我不确定如何解释我所追求的...任何帮助将不胜感激!提前致谢!

最佳答案

为了不引发异常两次,您应该将 try/except block 仅包裹在 if 语句中,如下所示:

if something:
try:
#make an error
;fdsfas
except Exception, e:
raise CustomException(e.message, file='somefile.txt', var2='something')
else:
raise CustomException('this is my custom message', file='somefile.txt', var2='something')

为了向自定义异常传递一些参数,您必须像在 if/else 语句中那样将这些参数提供给类的构造函数。

关于python 从 if 语句和 try-except 调用自定义异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15909709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com