2011-05-02 12 views

Respuesta

2

No me limitaré a pronunciar un veredicto y afirmar que "es malo", porque a veces puede que lo necesite. Python a veces deliberadamente lanza excepciones en lugar de permitirte preguntar (¿esto ...?) [El lema de EAFP] y en algunos casos anidar try/catch es útil, cuando esto tiene sentido con el flujo lógico del código.

Pero supongo que la mayoría de las veces no. Entonces, una mejor pregunta en su caso sería presentar un caso de uso específico donde cree que necesita dicho código.

+2

Estoy de acuerdo con este. Uso excepciones anidadas de vez en cuando, y no es "inherentemente" malo. A veces puede incluso mejorar la legibilidad de tu código ... – sbrattla

+0

En este momento, es la única forma de detectar algunos errores en las declaraciones intermedias ... si alguno de ellos falla, todos los demás se vuelven inútiles, y la máxima declaración se vuelve inútil también, porque los necesito a todos para cumplir la máxima declaración. (Es decir, pasar parámetros al método de una clase que enviará los datos a una API externa [Contactos de Google]). ¡Gracias! :) –

+1

@Jorge: si solo estás probando un par de condiciones, entonces la instrucción if/else parecería más adecuada. Puede estar usando try/except como una declaración oculta de goto aquí. ¡Si publica un código más detallado, obtendrá respuestas más específicas! – Ber

3

No, eso es algo común (excepto que la palabra clave es except en lugar de catch). Depende de lo que necesite hacer y del diseño.

Lo que es malo, que veo demasiado, está atrapando la clase de alto nivel Exception, en lugar de algo más específico (por ejemplo, KeyError). O levantando lo mismo.

+0

Muy cierto ... es excepto, no atrapado. Mi error. Estoy atrapando la clase Exception por ahora, pero la extenderé más tarde, cuando tenga más cosas definidas, por lo que probablemente me otorgue un mejor control y este tipo de estructura no será necesario. Gracias por la explicación, muy apreciada. –