TLDR:Используйте общий класс MyApiException, который включает в себя код API Error.
Ralph Schindler написал хорошую статью по общей теме на http://ralphschindler.com/2010/09/15/exception-best-practices-in-php-5-3
Если вы читаете все это, вы увидите раздел Рекомендации В библиотеке кодекса, который демонстрирует (я изменил свой пример этот контекст):
// usage of bracket syntax for brevity
namespace MyCompany\Component {
interface Exception
{}
class MyApiException
extends \RuntimeException
implements Exception
{}
class Component
{
public static function doSomething()
{
$myApiCall->doSomthing();
if ($myApiCall->hasError) {
throw new MyApiException($myApiCall->getMessage(), $myApiCall->getErrorCode);
}
}
}
}
Предполагая, что приведенный выше код, если бы нужно было выполнить MyCompany \ Component \ Компонента :: DoSomething(), исключение, которое излучается из DoSomething() метод может быть перехвачено любым из следующие типы: Исключение PHP , RuntimeException SPL. Исключение компонента MyCompany \ Component \ MyApiException компонента или компонента MyCompany \ Component \ Exception компонента. Это дает вызывающему абоненту любое количество возможностей для обнаружения исключения, которое исходит от данного компонента в вашей библиотеке, вызванного возвращенной ошибкой API.Кроме того, анализируя типы, составляющие исключение, более семантическое значение может быть дано исключительной ситуации, которая только что произошла.
Если коды ошибок могут быть сгруппированы логически (например, ошибки входа, ошибки синтаксиса в запросах API, ...), то это может привести к соответствующим классам исключений. – CBroe