web-dev-qa-db-fra.com

PHP check type d'exception levée

Bien sûr, dans PHP vous pouvez intercepter toutes les exceptions levées avec:

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

Mais existe-t-il un moyen de vérifier le type d'exception de l'exception levée depuis l'intérieur du bloc catch?

19
Jeffrey Cordero

Vous pouvez utiliser get_class :

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

Vous pouvez avoir plusieurs blocs catch pour intercepter différents types d'exceptions. Voir ci-dessous:

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.
}

Vous devez savoir qu'une fois qu'une exception est interceptée par une instruction catch, aucune des instructions catch suivantes ne sera déclenchée, même si elles correspondent à l'exception.

Vous pouvez également utiliser le get_class méthode pour obtenir le nom de classe complet de tout objet, y compris les exceptions.

12
Tom Wright