だから私はPDOに移行するのに忙しく(はい、私はまだそのような古い学校のmysqlドライバーです)、これまで例外を使用したことはありません。以下の私のコードは、私がこれまでに理解したことに基づいています。これが必要になる私のアプリケーションは、3つの別々のデータベース接続を作成します。そのうちの2つはmysqlと1つのmssqlです(したがって、そうでない場合はタイプ)。
問題は、間違った接続値を指定しても、スクリプトを処理して続行し、エラーがなかったかのように「キャッチ」を完全にスキップすることです。基本は次のとおりであることを理解しています。
try {
if("condition" != "conditions") {
throw new Exception("Oops I did it again");
}
catch(Exceptions as e) {
echo $e->getMessage();
}
また、PDOは例外を通過するので、投げる必要はありませんが、うまくいかないので、助けてください。また、この概念について私が誤解していることについてもう少し見落としを与えてください。
// connect(): Connect to a database (MySQL):
private function connect($cred) {
$type = $cred['type'];
if($type == "mysql") {
try {
$handler = new PDO("mysql:host".$cred['credentials']['server'].";dbname=".$cred['credentials']['database'].", ".$cred['credentials']['username'].",".$cred['credentials']['password']);
if($cred['errors'] == 'exception') {
$handler->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
} elseif($cred['errors'] == 'warning') {
$handler->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
} else {
$handler->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
}
}
catch(PDOException $e) {
$this->informer("FATAL","An error has occured trying to connect to the connection (".$cred['name'].") -".$e->getMessage());
return false;
}
return $handler;
}
}