TypeError: las excepciones deben ser de estilo antiguo o derivadas de BaseException, no de str

Lo siguiente es mi código:

test = 'abc' if True: raise test + 'def' 

Y cuando ejecuto esto, me da el TypeError

 TypeError: exceptions must be old-style classes or derived from BaseException, not str 

Entonces, ¿qué tipo de tipo debe ser la test ?

El único argumento a plantear indica la excepción a ser planteada. Debe ser una instancia de excepción o una clase de excepción (una clase que se deriva de Exception).

Prueba esto:

 test = 'abc' if True: raise Exception(test + 'def') 

No puedes raise una str . Solo se pueden raise Exception s d.

Entonces, es mejor que construyas una excepción con esa cadena y la subas. Por ejemplo, podrías hacer:

 test = 'abc' if True: raise Exception(test + 'def') 

O

 test = 'abc' if True: raise ValueError(test + 'def') 

Espero que ayude

Debería ser una excepción.

Quieres hacer algo como:

 raise RuntimeError(test + 'def') 

En Python 2.5 y versiones anteriores, su código funcionaría, ya que entonces se le permitió crear cadenas como excepciones. Esta fue una decisión muy mala, y por lo tanto eliminado en 2.6.