Certains programmes sont capables de détecter leurs propres erreurs internes afin de proposer un diagnostic à l'utilisateur ou aux personnes en mesure de les résoudre.
Un serveur HTTP doit gérer à la fois les erreurs dues au client et les erreurs dues au serveur, qui se distinguent par leurs codes respectifs (de la forme 4xx pour les erreurs du client, 5xx pour les erreurs du serveur)[1].
L'erreur interne la plus générique due au serveur est simplement dénommée Internal Server Error et a pour code 500[2].
Un compilateur traite de nombreux types d'erreurs (erreurs de syntaxe, erreurs de logique…) qui se produisent dans le cadre d'une utilisation normale, et qui donnent lieu à des diagnostics afin d'aider l'utilisateur à résoudre ces erreurs.
Les erreurs internes au compilateur (qui ne sont pas dues à une mauvaise utilisation ni à un code malformé) sont souvent désignée par l'acronyme ICE (pour Internal Compiler Error, en anglais).
C'est notamment le cas avec les compilateurs GCC[3] et Visual Studio[4], ce dernier distinguant les « erreurs de backend internes », les « erreurs de compilateur internes » et les « erreurs de générateur de code internes ». La documentation de GCC précise quant à elle que ces erreurs sont aussi dues à des problèmes matériels[5],[6].