Unicode y Excepciones: Un buen artículo y un mal comentario
El siempre brillante Joel Spolsky ha escrito un gran artículo sobre los juegos de caracteres de las cadenas en programación y una explicación sencilla sobre Unicode: The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!). Realmente imprescindible para cualquier programador.
El no siempre tan brillante Joel Spolsky dice no entender y desaprobar la programación con excepciones. Lo que yo no puedo entender es cómo alguien puede trabajar sin ellas. Realmente el uso de excepciones simplifica enormemente el trabajo de programación sin introducir ninguno de los defectos que el cree verles. Permite escribir por un lado el flujo normal de un método o función y por otro lado la gestión de errores que se pueden dar. Sobre su lista de defectos se puede comentar (por lo menos en lo referido a Java):
- No son invisibles en el código fuente. Por lo menos en Java la lista de excepciones que un método lanza están declaradas en la propia definición del método y de hecho obliga a pensar qué hacer en caso de error (capturar el error para solucionarlo o pasar la excepción un nivel arriba si no se tiene información suficiente para solucionarlo).
- No crean demasiados puntos de salida para una función. De hecho, sólo es así si la excepción no se captura y aún en ese caso se tiene la oportunidad de limpiar el estado de variables y recursos en la clausula finally.
En fin, que cualquier práctica de programación puede usarse mal, pero las excepciones tienen la potencialidad de simplificar el trabajo del programador y asegurar programas más robustos.


14 octubre 2003, 14:43
Totalmente de acuerdo contigo, en lo referente a las excepciones.
Sigo desde hace años los artículos de Joel Spolsky, y me ha sorprendido bastante este último.
Encima la solución/alternativa que propone, me parece un poco "arcaica", tener que comprobar constantemente que devuelven las funciones... :(
Yo programo con Delphi, y cuando descubrí el poder de las excepciones me dije: "¿Pero como he podido programar si esto...?"
A mi las excepciones me recuerdan, en cierto modo, al ON ERROR del Clipper y del BASIC, es decir, cuando se produce un error a que se llama, pero con la ventaja que no has de tener un manejador global y universal de errores, sino que puedes adaptar el manejo/solución del error a cada caso.
Y de la forma que propone el tema de utilizar los valores de retorno de una función para verificar si todo ha ido bien... Que hacemos cuando una función de una librería me lanza una excepción, ¿no la capturo? ¿Dejo que me "rompa" el flujo de mi programa?
En los entornos actuales de desarrollo todo funciona por eventos y por objetos, que mejor técnica que las excepciones (que no dejan de ser una especie de evento) para estos lenguajes.
Una cosa es verdad... Que a veces una excepción excepcional (valga la "rebuznancia") provoca una cascada de excepciones, pero eso más que fallo de las excepciones es fallo del programador, porque simplemente no ha puesto un "capturador" para dicha excepción. Es como decir que cuchillos son malos porque con ellos puedes matar a personas, no son los cuchillos es el mal uso que se hace de ellos, como muy bien dices al final del post.