validar por excepciones python typeerror raise

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