Предположим, у меня есть некоторый код, который использует try{...} catch() { ... }
блоки. В проверенном коде есть различные нетривиальные сторонние объекты (или, возможно, другие данные).
Часто эти сторонние объекты генерируют свои собственные сторонние исключения; как я могу быть уверен, что поймать их, не зная, как на самом деле называются эти исключения?
Имеются ли в различных частях кода различные сторонние объекты и методы, существует ли относительно быстрый способ перехвата всех исключений для дальнейшего изучения?
Подробный пример использования (Stripe имеет множество исключений)
$someObject = new \someNamespace\someClass();
try {
$x = $someObject->someFunction($someData);
$y = $stripeObject->StripeProcessing($x);
}
catch(\Stripe\Error\Card $ex) {
// Since it's a decline, \Stripe\Error\Card will be caught
error_log("Stripe Card Error: ".$ex->message);
$message = "There was a card error: ".$err['message'];
}
catch (\Stripe\Error\RateLimit |
\Stripe\Error\InvalidRequest |
\Stripe\Error\Authentication |
\Stripe\Error\ApiConnection |
\Stripe\Error\Base $ex) {
$message = "There was a Stripe error: ".$ex->getMessage();
error_log("Stripe Other Error: ".print_r($ex,true));
}
catch( \someNamespace\GiggityException |
\someNamespace\GiggityNewMexicoException){
error_log("Family Guy! ".print_r($ex,true));
}
catch (Exception $ex){
error_log("Elvis has died! ".print_r($ex,true));
}
Может привести к:
Неустранимая PHP-ошибка: Uncaught SomeDistributor \ SomeClass \ Exception: соединение () не удалось. ... и т.д ... и т.д ...
Так что выше есть куча Исключений, чтобы поймать, из двух пространств имен, а также общий Exception
в конце; Хотя реакция кода на все это очень похожа; Кажется, мне все еще нужно знать имя каждого брошенного класса Exception и кодировать его вручную;
Итак, есть ли способ перехватить ВСЕ возможные исключения в одном месте?
(Перед тем как дифференцировать и разветвлять, как обращаться с конкретными при необходимости)
Я уверен, что решение этого очень простое, но я не могу найти литературу по этому вопросу (d'oh; С тех пор я нашел литературу ).