1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

複数種類の例外をtry-catchした時の挙動

Posted at

#はじめに
PHPの公式ドキュメントを見ていて,複数の例外クラスにまたがるtry-catchの処理を1つのcatchブロックで行う方法が触れられていたので,それについて行った簡単な実験を紹介します。
環境:XAMMP, PHP7.4.5
#問題の公式ドキュメント
qiita20201129.png
qiita20201129_2.png

引用元:例外についてのPHP公式ドキュメント
#思ったこと
tryブロックの中で複数のクラスから例外がthrowされたらどうなる?
#実験

test.php
<?php try {
    throw new PDOException("PDOの例外だよ");
    throw new Exception("普通の例外だよ");
} catch (PDOException | Exception $e) {
    echo $e->getMessage();
}

#実行結果
qiita20201129_3.png
注:Chromeでのスクリーンショットです。
1つ目のthrowで処理がcatchに飛び,2つ目(Exceptionクラス)はthrowされませんでした。

#まとめ
そもそも複数クラス例外が同時に発生すること自体が致命的なのでそうならないようにしておくというのが大前提ではあるものの,tryブロックで複数の例外が発生している場合,1つ目のthrowによって飛ばされた2つ目のthrowを見逃す可能性は無きにしも非ず。まだまだ駆け出し&初投稿ですがぽつぽつと続けていければと思います。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?