¿Las mejores prácticas o recomendaciones para el manejo de excepciones? [cerrado]


12

Creo que los dos problemas principales con mis programas son mi estructura de código / organización y mi manejo de errores. Estoy leyendo Code Complete 2, pero necesito leer algo para trabajar con posibles problemas.

Por ejemplo, en un sitio web, si algo solo puede suceder si el usuario manipula los datos a través de JavaScript, ¿escribe para eso? Además, ¿cuándo no detecta los errores? Cuando escribes una clase que espera una cadena y un int como entrada, y no son una cadena e int, ¿lo verificas o dejas que aparezca en el método de llamada que pasó parámetros incorrectos?

Sé que este es un tema amplio que no se puede responder en una sola respuesta aquí, así que lo que estoy buscando es un libro o recurso que se acepte comúnmente como enseñanza de la práctica adecuada de manejo de excepciones.


1
¿Qué idioma y plataforma de desarrollo estás usando?
Yusubov

1
Creo que "Código limpio" tiene un buen capítulo sobre este problema
Hoàng Long

Lo que dijo @ElYusubov. Los detalles y estándares de implementación del idioma / plataforma con el que está tratando influyen mucho sobre las mejores prácticas.
vaughandroid

Respuestas:


12

Una de las cosas buenas para recordar es realizar el manejo de excepciones when there is a need.

Para la plataforma de desarrollo de .NET, solo siga las pautas de MSDN: Mejores prácticas para manejar excepciones , así como consulte este agradable artículo de proyecto de código : Mejores prácticas de manejo de excepciones en .NET

Sin embargo, las siguientes pautas son principalmente ciertas para cualquier plataforma de desarrollo:

  • No gestione la lógica de negocios con excepciones. Use declaraciones condicionales en su lugar. Si se puede hacer un control con la declaración if-else claramente, no use excepciones porque reduce la legibilidad y el rendimiento (por ejemplo, control nulo, dividir por control cero). .

  • Los nombres de excepción deben ser claros y significativos, indicando las causas de la excepción.

  • Lanza excepciones para condiciones de error al implementar un método. Por ejemplo, si devuelve valores -1, -2, -3, etc. en lugar de FileNotFoundException, ese método no se puede entender.

  • Capture excepciones específicas en lugar de la clase de excepción superior. Esto traerá rendimiento adicional, legibilidad y manejo de excepciones más específico.

  • El control nulo con condicionales no es una alternativa a la captura de NullPointerException. Si un método puede devolver nulo, contrólelo con la instrucción if-else. Si una devolución puede arrojar NullPointerException, atrápalo.

  • Trate de no volver a lanzar la excepción debido al precio. Pero si volver a tirar fuera una obligación, vuelva a lanzar la misma excepción en lugar de crear una nueva excepción. Esto traerá un rendimiento adicional. Puede agregar información adicional en cada capa a esa excepción.

  • Defina su propia jerarquía de excepciones extendiendo la clase de excepción actual (por ejemplo, UserException, SystemException y sus subtipos) y úselas. Al hacer esto, puede especializar sus excepciones y definir un módulo / capa de excepciones reutilizable. más para seguir en este enlace


2
Algunos buenos puntos generales, aunque no creo que su quinto punto ("Control nulo con condicionales ...") sea muy claro.
vaughandroid

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.