por - excepciones en python
TypeError: las excepciones deben ser de estilo antiguo o derivadas de BaseException, no de str (3)
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
?
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.
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 construir una excepción con esa cadena y elevarla. 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