Una tarde, estaba caminando por la calle para verme con unos amigos en un bar. No habíamos compartido una cerveza en algún tiempo y quería verlos de nuevo. Con las prisas, no miré por dónde iba. Tropecé con el borde de una esquina y caí de bruces . Bueno, me lo merecía por no poner atención, supongo.
Me dolía la pierna, pero tenía prisa por ver a mis amigos. Así que me levanté y seguí. Conforme caminaba el dolor se ponía cada vez peor. A pesar de que al inicio lo desestimaba como una conmoción, me di cuenta rápidamente de que había algo mal.
Pero me apresuré hacia el bar de todos modos. Estaba en agonía en el momento en que llegué. No tuve una gran noche, porque estaba terriblemente distraído. En la mañana fui al médico y me enteré de que me había fracturado el hueso de la espinilla. De haberme detenido cuando sentí el dolor, habría prevenido un montón del daño adicional que me causé por seguir caminando. Probablemente fue el peor día-después de mi vida.
Muchos programadores escriben código como mi desastrosa salida en la noche.
¿Error, cuál error? No va a ser grave. Honestamente. Puedo ignorarlo. Esta no es una estrategia ganadora para un código sólido. De hecho, es pura flojera (de la mala). No importa que tan poco probable creas que es un error en tu código, siempre debes revisarlo y tomarlo en cuenta. Todas las veces. No estás ahorrando tiempo si no lo haces: estás almacenando problemas potenciales en el futuro.
Reportamos errores en nuestro código de distintas formas, incluyendo:
printf
?Excepciones. Son una forma más soportada por los lenguajes estructurados para señalar y manipular errores. Y puedes ignorarlos. ¿O no? He visto muchos códigos como estos:
try {
// ...do something...
}
catch (...) {} // ignore errors
La salvación en este horrible constructo es que resalta el hecho de que estás haciendo algo moralmente dudoso.
Si ignoras un error, te haces de la vista gorda y haces de cuenta que nada ha pasado, corres un gran riesgo; así como mi pierna terminó en un peor estado por no haber dejado de caminar inmediatamente, a pesar de que conduce a una falla muy compleja, enfrenta los problemas lo antes posible. Mantén una cuenta breve.
No manejar errores conduce a:
Al igual que debes comprobar todos los posibles errores en tu código, necesitas exponer todas las condiciones potenciales de error en tus interfaces. No ocultarlos, pretendiendo que tus servicios siempre funcionarán.
¿Por qué no comprobamos si hay errores? Hay un serie de excusas comunes. ¿Con cuál de ellas estás de acuerdo? ¿Cómo contrarrestar cada una?
printf
siempre funciona, malloc
siempre retorna nueva memoria); si falla
tenemos problemas mayores.Traducción: Espartaco Palma