Rich Leik fut envoyé dans une grande compagnie d'assurance comme consultant pour les aider à faire face aux bugs dans le noyau de leur application. Un des problèmes principaux que rencontra Rich c'était le peu d'informations qu'avait le support sur les cas qu'il devait résoudre : l'application ne fournissait pas de log et tous les messages d'erreur affichaient simplement "une erreur est apparue. Veuillez réessayer".
Après quelques semaines passées à ajouter de grosses portions de log, traçage et gestion d'exception dans le cœur du système, les développeurs étaient enchantés. Ils savaient enfin dans quelle direction aller quand un bug se produisait. Tout de même, il y avait encore un point que Rich trouvait plutôt bizarre : la base de données levait des tas et des tas d'exceptions de type "division par zéro".
Un peu de recherche conduisit Rich vers le cœur du problème, la procédure "ABORD_PROCEDURE". Plutôt que de lever et de gérer les exceptions dans les procédures, les premiers développeurs décidèrent d'utiliser ceci à la place :
CREATE OR REPLACE PROCEDURE ABORT_PROCEDURE IS
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
-- Parametres: NONE ==
-- BUT: FORCE LA FIN DE LA PROCEDURE STOQUEE ==
-- Interval: APPELLE DEPUIS D'AUTRES PROGRAMMES ==
-- Tables: NONE ==
-- Sub Programs: NONE ==
-- Author: S. Nagheenanajar ==
-- CREE LE: 2002-10-08 ==
-- Revisions: ==
-- Author Date Description ==
-- ------------------------- ---------- ------------------------------------------------- ==
-- M. Bolton 2003-06-09 Change par DIV0 erreur au lieux de overflow error ==
--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
--= VARIABLES ==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
v_divzero NUMBER;
--= PROCEDURE DEBUT =--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==
BEGIN
v_divzero := 7;
v_divzero := v_divzero / 0;
END;
--= PROCEDURE FIN ==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==--==