すべての例外を管理するためのカスタム例外クラスを構築しています。
class MyExceptions extends Exception
{
public function __construct($message = 'Unkown errror', $code = -1, Exception $previous = null) {
echo 'init!';
parent::__construct($message, $code, $previous);
}
}
ここで、PDOExceptionが発生したときに、それをMyExceptionsに再スローしたいと思います。
class myDB
{
private $db;
public function dbConnect() {
try {
$this->db = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'user', 'pass');
}
catch (PDOException $e) {
throw new MyExceptions($e);
}
/* Updated */
catch (MyExceptions $e) {
echo 'caught!';
}
}
}
問題は、db接続の例外が発生すると、画面に次の致命的なエラーが表示されることです。
init!
Fatal error: Uncaught exception 'MyExceptions' with message...
したがって、MyExceptions __construct()が呼び出されても、例外はキャッチされません(表示される「init!」を参照)。私が読んだリソースのすべてのビットは、私のものとしての正確な実装を示しています。私は自分が何を間違っているのかわかりません。