Подтвердить что ты не робот

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?

4b9b3361

Ответ 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.