例外が投げられる条件
public function delete($id,$password){
$stmt = $this->dbh->prepare("SELECT password FROM post_3 WHERE id = :id");
$stmt->bindValue(':id',$id,PDO::PARAM_INT);
$stmt->execute();
$db_password = $stmt->fetchColumn();
var_dump($db_password);
if(!password_verify($password,$db_password)){
throw new Exception('パスワードが違います');
}
$stmt = $this->dbh->prepare("DELETE FROM post_3 WHERE id = :id");
$stmt->bindValue(':id',$id,PDO::PARAM_INT);
$stmt->execute();
}
上記コードは簡易な掲示板のフォームより送信されたデータを元にデータベースの値を削除するメソッドなのですが、上記コードでは、try,catch文にて、データベース接続処理を書いていません。try,catch文内ではないのですが、「throw new Exception('パスワードが違います');」
と例外を投げることはできるのでしょうか?
実際に、エラーを出す為、
if(!password_verify($password,$db_password)){
throw new Exception('パスワードが違います');
}
ここの部分でfalseとなるように、間違ったパスワードを掲示板のフォームより入力し、動かしてみましたら、以下のように表示されました。
Fatal error: Uncaught Exception: パスワードが違います in C:\xampp\xampp\htdocs\object_bbs.php\bbs_class1.php:100 Stack trace: #0 C:\xampp\xampp\htdocs\object_bbs.php\delete1.php(25): Bbs->delete(15, '1111111111') #1 {main} thrown in C:\xampp\xampp\htdocs\object_bbs.php\bbs_class1.php on line 100
一応、「パスワードが違います」と例外を投げた際に記載した文字列が表示されています。
これは、例外処理がなされた、ということなのでしょうか?
自分としましては、try,catch文内の、catchが出来なければ、例外を投げても受け取れないのではないのかなと思ったもので、疑問に思い質問させて貰いました。
ご回答、頂けましたら幸いです。よろしくお願いいたします。