假设我有一些代码会引发任何类型或错误。我希望我的代码引发 AssertionError,但打印出原始错误的原始消息。我该怎么做?
(例子)
原始错误: TypeError: '>' 在 'str' 和 'int' 的实例之间不被支持
自定义错误:AssertionError: exception = TypeError: '>' 不支持 'str' 和 'int' 的实例
最佳答案
您必须捕获引发的异常,然后引发您想要的任何类型。由于您提到要捕获任何 类型的错误,因此您必须使用Exception
类作为捕获。
但是,我要指出的是,这通常是一种不好的做法,因为您通常只想捕获预计会出现的特定错误。但是如果你最终还是抛出了一个错误,我想这并不可怕。但也让我特别想知道这段代码的目标是什么。无论如何..
捕获任何东西
try...except Exception as e
引发首选错误
引发 AssertionError()
获取消息
e.message
获取类型
类型(e)
综合起来:
try:
# some code that raises an error
g = 10 + '11'
except Exception as e:
raise AssertionError('{}: {}'.format(type(e), e.message))
输出将是:
<type 'exceptions.TypeError'>: unsupported operand type(s) for +: 'int' and 'str'
这可以被清除以摆脱丑陋的 type(e)
输出,但通常这是您将错误类型及其相应消息包括在内的方式。
关于python - 希望我的代码引发特定类型或错误,但打印原始错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54974047/