es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El funcionamiento del bloque try/except no está funcionando porque el error ocurre durante la ejecución de la función check() y no en la línea específica print(type(data)). El error TypeError: can only concatenate str (not "int") to str ocurre cuando intentas combinar la variable str a con la variable int b. Dado que este error no es causado por un problema con el bloque try/except, el bloque except no se ejecuta y en su lugar se imprime el mensaje de error en la consola. Para solucionar esto, puedes modificar la función check() para incluir la operación de concatenación dentro del bloque try/except:

    a = '123'
    b = 123
    
    def check(data):
        try:
            print(type(data))
            combined = a + b
        except TypeError as error:
            print(f'Error: {error}')
    
    check(a+b)
    

    Ahora, cuando llames a check(a+b), el error ocurrirá durante la operación de concatenación y el bloque except se ejecutará, imprimiendo el mensaje de error en lugar de generar un error.

Comments are closed.