1а. Код, возвращаемый из каждой ветки управления, должен быть уникальным.
ЛИБО
1б. При выводе сообщения об ошибке должен указываться не только код, но и место возникновения ошибки (файл с исходным текстом, строка; в си/пхп для этого есть __FILE__, __LINE__, а в пхп ещё и __FUNCTION__).
2а. Сообщения об ошибках должны быть уникальными.
ЛИБО
2б. В сообщения должен быть включён код ошибки.
Я же встретил следующую вещь:
switch(nError)
{
//...
case 100:
case 101:
case 102:
AfxMessageBox("Разгерметизация скафандра!");
break;
//...
}
А ошибки 100, 101 и 102 выпадали из десяти разных мест.
После этого разработчикам становится понятно, в чём дело, но становится непонятно, куда копать.