sad*_*ave 8 python error-handling if-statement exception custom-exceptions
因此,我创建了一个自定义异常,我想以两种不同的方式调用它(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)
Run Code Online (Sandbox Code Playgroud)
这是我想要实现自定义异常的方式:
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)
Run Code Online (Sandbox Code Playgroud)
我认为我的问题有两个:
NameError1:当块中抛出的标准时try/except(由于;lsdfj),我想传递CustomExceptions一些额外的参数,例如“文件”,就像if/else实现一样;我该怎么做呢?
2:当引发自定义异常时(由于 if/else 语句为 false),CustomExceptions 类最终会被调用两次,因为我在 if/else 块中引发它,然后它在该部分中再次引发except:。我不知道如何解决这个问题。
因此,在上面的情况下,我想在不为 true 时调用 CustomException if-statement,并且当代码块内抛出标准异常时调用它...但目前,if something:计算结果为 false,则将CustomException引发两次...
所以我希望在我的代码中单方面使用自定义异常作为if/else条件,以及标准 python 异常......
我知道这个解释很复杂,但我不确定如何解释我所追求的内容......任何帮助将不胜感激!提前致谢!
为了不引发两次异常,您应该仅将块try/except包裹在语句周围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')
Run Code Online (Sandbox Code Playgroud)
为了传递自定义异常的一些参数,您必须将这些参数提供给类的构造函数,就像在语句中所做的那样if/else。