2009-02-02 13 views
11

Recientemente leí "Object Oriented Exception Handling in Perl" artículo de Perl.com. ¿Hay algún punto para usar excepciones en Perl?¿Vale la pena el manejo de excepciones orientadas a objetos en Perl?

+1

¿utiliza expceptions o usa excepciones orientadas a objetos? – innaM

+0

¿hay una excepción normal? o quieres decir advertir y morir? Estoy hablando de los OO/ – mandel

+0

Gracias por señalar el artículo - Aprendí sobre el módulo de oveload :) – Arkadiy

Respuesta

18

Debo notar que el artículo al que hace referencia es antiguo, y que ahora debería usar Exception::Class en lugar de Error.pm, que es peculiar y tiende a romperse (es lo que llamo "magia negra"). Debo señalar que ahora soy el mantenedor Error.pm, pero ya no lo recomiendo ni lo uso para mi propio código.

+2

Me gustaría otorgarle un [Insignia disciplinada] (http://stackoverflow.com/help/badges/37/disciplined) para recomendar a otros que no utilicen su propio módulo. –

+1

El enlace está roto. Debería ser [Exception :: Class] (https://metacpan.org/pod/Exception::Class). – patszim

+0

Gracias @patszim! Lo actualicé para señalar a metacpan.org. –

12

"¿Hay algún punto para usar excepciones en Perl?"

Sí, recomiendo encarecidamente la lectura de la "Gestión de errores" en el capítulo Perl Best Practices por Damian Conway.

Ciertamente me abrió los ojos ;-)

7

Absolutamente. Si arroja un simple 'dado', realmente no tiene más información que la computadora puede manejar. Por ejemplo, tengo un marco de prueba que usa Test :: Most y ese módulo puede permitirle morir en fallas de prueba. Sin embargo, mi framework necesitaba saber si me estaba muriendo porque una prueba falló o porque el código murió. Por lo tanto, lancé una excepción Test :: Most :: y mi framework puede verificar el tipo de excepción y tomar las medidas adecuadas.

Las excepciones son de su amigo :)

3

En cualquier lenguaje de programación, las excepciones se permitirá hacer frente a diferentes tipos de errores de diferentes maneras. Esto puede ser realmente útil para realizar un seguimiento de los errores detallados en las pruebas y tratar de forma inteligente los errores recuperables dentro de su programa. No vale la pena para cada programa desechable que escribes, pero para las cosas que pasas mucho tiempo desarrollando, puede valer la pena el esfuerzo.