If it's stupid but works, it isn't stupid.
PHP Exception Handling Обработка исключений
Try, throw and catch
Creating a Custom Exception Class
Комбинирование кастомных и встроенных исключений (отловится только первое пойманное исключение)