Python - Capturar excepción en argumentos de función

   
Vista:

Capturar excepción en argumentos de función

Publicado por Yidu (13 intervenciones) el 03/04/2015 14:41:47
Hola!

Aunque pensaba que lo tenia claro, veo que no. Se trata de capturar un argumento mal pasado a una función.

Si hago:

1
2
3
4
5
6
7
8
def numeros(a, b):
    try:
        resultado = a + b
        return resultado
    except TypeError:
        print('Es un tipo de dato equivodo')
    except NameError:
        print('Variable no definida')

Y luego:

1
2
>>> a = numeros(4,'t')
Es un tipo de dato equivocado

Me captura bien la excepción.

¿Porqué no courre lo mismo si ponemos una variable no definida?

1
2
3
4
>>> numeros(4,z)
Traceback (most recent call last):
  File "<string>", line 1, in <fragment>
builtins.NameError: name 'z' is not defined

¿No dabería lanzar la excepción NameError definida por nosotros? Osea:

1
Variable no definida

Gracias por adelantado!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Capturar excepción en argumentos de función

Publicado por Alejandro (84 intervenciones) el 05/04/2015 16:34:43
El error te lo muestra desde la línea 1, es decir, ni si quiera llega a la excepción. Lo que pasa es que cuando pasas la variable a la función números, este no la reconoce. Es por eso que te manda el error antes de llegar try
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar