以下是我的代码:
test = 'abc'
if True:
raise test + 'def'
当我运行它时,它给了我TypeError
TypeError: exceptions must be old-style classes or derived from BaseException, not str
那么应该是什么样的类型test
呢?
raise 的唯一参数表示要引发的异常。这必须是异常实例或异常类(从 Exception 派生的类)。
试试这个:
test = 'abc'
if True:
raise Exception(test + 'def')
你不能raise
一个str
. 只有Exception
s 可以是raise
d。
所以,你最好用那个字符串构造一个异常并引发它。例如,您可以这样做:
test = 'abc'
if True:
raise Exception(test + 'def')
或者
test = 'abc'
if True:
raise ValueError(test + 'def')
希望有帮助
应该是个例外。
你想做这样的事情:
raise RuntimeError(test + 'def')
在 Python 2.5 及更低版本中,您的代码可以工作,因为它允许将字符串作为异常引发。这是一个非常糟糕的决定,因此在 2.6 中被删除。