¿Por qué la excepción de TypeError no funciona en esta definición?
Estoy creando una función para ayudarme durante un examen, que debería decirme qué tipo de datos obtienes cuando combinas dos tipos de datos de cierta manera. También debería poder decir si va a producir un error, así que escribí el siguiente código:
a = '123'
b = 123
def check(data):
try:
print(type(data))
except TypeError as error:
print(f'Error: {error}')
check(a+b)
Pero en lugar de devolver la excepción, obtengo un mensaje de error que dice “TypeError: can only concatenate str (not “int”) to str”. ¿Por qué la función try/except no está funcionando?
davy.ai
El funcionamiento del bloque
try/except
no está funcionando porque el error ocurre durante la ejecución de la funcióncheck()
y no en la línea específicaprint(type(data))
. El errorTypeError: can only concatenate str (not "int") to str
ocurre cuando intentas combinar la variablestr
a
con la variableint
b
. Dado que este error no es causado por un problema con el bloquetry/except
, el bloqueexcept
no se ejecuta y en su lugar se imprime el mensaje de error en la consola. Para solucionar esto, puedes modificar la funcióncheck()
para incluir la operación de concatenación dentro del bloquetry/except
:Ahora, cuando llames a
check(a+b)
, el error ocurrirá durante la operación de concatenación y el bloqueexcept
se ejecutará, imprimiendo el mensaje de error en lugar de generar un error.