TypeError: исключения должны быть классами старого стиля или производными от BaseException, а не str
Ниже приведен мой код:
test = 'abc'
if True:
raise test + 'def'
И когда я запускаю это, он дает мне TypeError
TypeError: exceptions must be old-style classes or derived from BaseException, not str
Итак, какой тип должен быть test be?
Ответ 1
Единственный аргумент для повышения указывает на исключение. Это должен быть либо экземпляр исключения, либо класс исключения (класс, который происходит из Exception).
Попробуйте следующее:
test = 'abc'
if True:
raise Exception(test + 'def')
Ответ 2
Вы не можете raise a str. Только Exception может быть raise d.
Итак, вам лучше построить исключение с этой строкой и повысить это. Например, вы можете сделать:
test = 'abc'
if True:
raise Exception(test + 'def')
ИЛИ
test = 'abc'
if True:
raise ValueError(test + 'def')
Надеюсь, что поможет
Ответ 3
Это должно быть исключение.
Вы хотите сделать что-то вроде:
raise RuntimeError(test + 'def')
В Python 2.5 и ниже ваш код будет работать, так как тогда было разрешено поднять строки как исключения. Это было очень плохое решение, и поэтому он удален в 2.6.