Исключения


// Генерация и обработка исключения

try {
    throw new MyException('X is invalid number');
}
catch (MyException $e) {
    echo "Caught my exceptionn", $e;
}
catch (Exception $e) {
    echo "Caught Default Exceptionn", $e;
}

// Своё исключение:

class MyException extends Exception
{
    public function __construct($message, $code = 0, Exception $previous = null) {
        ... some code ...
        parent::__construct($message, $code, $previous);
    }

    public function __toString() {
        return __CLASS__ . ":" . $this->code . ":" . $this->message . "n";
    }
}

* Исключения и ошибки выполнения в PHP различаются
* Исключения наследуются от классов Exception и ErrorException
* Ловушку для ошибок выполнения можно задать функцией set_error_handler()
* Ловушку для исключений по умолчанию можно задать функцией set_exception_handler()