Класс Exception - доступен для расширения, это можно использовать для
1) Для расширения функционала
2) Создаётся новый тип класса который поможет при обработке ошибок.
class BookException extends Exception{
private $error;
private $error_code;
function __construct( $error, $error_code){
$msg = 'Неверное название книги';
$msg .= ' - ' . $error;
$this->error = $msg;
$this->error_code = $error_code;
parent::__construct( $msg, $error_code);
}
public function getError(){
return $this->error;
}
}
class Book{
private $name;
private $author;
public function __construct($config){
if(!$config['name']){
throw new BookException('no name', 1);
}
$this->name = $config['name'];
if(!$config['author']){
throw new BookException('no author', 2);
}
$this->author = $config['author'];
}
}
try {
$book = new Book(array('author'=>'Mike Jonson'));
}
catch (Exception $e) {
echo 'Выброшено исключение: ', $e->getError(), PHP_EOL;
}