Koenig, с инсключениями все довольно просто:
* Стараемся обработать проблемы в тех местах где они появляются. Так, если мы получили число меньшее нуля, когда нужно положительное, приводим число к нулю (или используем какой либо другой подход);
* Если код, обнаруживший проблему не может обработать ее сам, то он выбрасывает исключение как бы говоря "я не знаю что с этим делать и умываю руки". Исключения должны обрабатываться выше;
* Если же код обнаружил ошибку, которой в принципе быть не должно (на пример метод получил данные, которые не должен был получить или эти данные некоректны и их нельзя исправить), используются http://php.net/manual/ru/funct ... t.php для отлова этих проблемных мест
Звучит все довольно просто, но для правильного использования этого подхода нужно много практиковаться, ошибаться и исправляться. Важно понимаеть, какие действия в программе считаются нормальными (первый случай), какие исключительными, но допустимыми (второй случай), а какие недопустимыми и критическими (третий случай).
Так же нужно решить, следует ли вообще использовать исключения в программе, или можно обойтись без них.