Наследование исключений | Extending Exceptions

Класс 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;
 }