excname = $name; parent::__construct($reason, $code); } public function getName() { return $this->excname; } } class SqlException extends Exception { private $query; public function __construct($message = "Sql Error", $query = "") { $this->query = $query; parent::__construct($message, 0); } public function getSqlError() { return $this->getMessage().' while executing: '.$this->query; } } class BookNotFoundException extends WebException { public function __construct($code) { parent::__construct('BookNotFound', "The book with code $code was not found", -404); } } /** * Exception raised when an invalid attribute name is accessed */ class InvalidAttributeException extends Exception { }