Voici mon code:
test = 'abc'
if True:
raise test + 'def'
Et quand je lance ça, ça me donne le TypeError
TypeError: exceptions must be old-style classes or derived from BaseException, not str
Quel type de type devrait donc être le test
?
Le seul argument à soulever indique l'exception à soulever. Il doit s'agir d'une instance d'exception ou d'une classe d'exception (une classe qui dérive d'Exception).
Essaye ça:
test = 'abc'
if True:
raise Exception(test + 'def')
Vous ne pouvez pas raise
a str
. Seuls Exception
s peuvent être raise
d.
Donc, vous feriez mieux de construire une exception avec cette chaîne et de l'augmenter. Par exemple, vous pourriez faire:
test = 'abc'
if True:
raise Exception(test + 'def')
OR
test = 'abc'
if True:
raise ValueError(test + 'def')
J'espère que ça t'as aidé
Ce devrait être une exception.
Vous voulez faire quelque chose comme:
raise RuntimeError(test + 'def')
Dans Python 2.5 et ci-dessous, votre code fonctionnerait, car il était alors autorisé de lever des chaînes comme exceptions. Ce fut une très mauvaise décision, et donc supprimée en 2.6.