web-dev-qa-db-ja.com

PHPスローされた例外タイプを確認

もちろん、PHPでは、スローされたすべての例外をキャッチできます:

try{
    /* code with exceptions */
}catch(Exception $e) {
    /* Handling exceptions */
}

しかし、catchブロック内からスローされた例外の例外タイプをチェックする方法はありますか?

19
Jeffrey Cordero

get_class

try {
    throw new InvalidArgumentException("Non Sequitur!", 1);
} catch (Exception $e) {
    echo get_class($e);
}
52
Don't Panic

複数のcatchブロックを使用して、異なる例外タイプをキャッチできます。下記参照:

try {
    /* code with exceptions */
} catch (MyFirstCustomException $e) {
    // We know it is a MyFirstCustomException
} catch (MySecondCustomException $e) {
    // We know it is a MySecondCustomException
} catch (Exception $e) {
    // If it is neither of the above, we can catch all remaining exceptions.
}

例外がcatchステートメントによってキャッチされると、次のcatchステートメントは、たとえ例外に一致したとしてもトリガーされないことを知っておく必要があります。

get_classメソッドを使用して、例外を含むオブジェクトの完全なクラス名を取得することもできます。

12
Tom Wright