exceptions/JsonException.md
Класс JsonException
Пространство имён: goodboyalex\php_components_pack\exceptions
Версия: 1.1
Доступно с: 1.1.0
Описание
Исключение, которое возникает при ошибках работы с JSON-данными. Наследует базовый класс Exception.
Автор
- Имя: Александр Бабаев
- Email: contact_with_us@babaev-an.ru
Свойства класса
Публичные свойства
jsonString
- Тип:
?string - Описание: Строка JSON, вызвавшая ошибку (или
null)
errorCode
- Тип:
JsonErrorCode - Описание: Код ошибки JSON
errorMessage
- Тип:
?string - Описание: Сообщение об ошибке JSON (или
nullпри отсутствии ошибок)
Конструктор
public function __construct(?string $json = null, JsonErrorCode $errorCode = JsonErrorCode::Unknown, ?string $errorMessage = null)
Параметры:
$json(?string) — строка JSON (по умолчаниюnull)$errorCode(JsonErrorCode) — код ошибки (по умолчаниюJsonErrorCode::Unknown)$errorMessage(?string) — сообщение об ошибке (по умолчаниюnull)
Особенности обработки
Обработка сообщений об ошибках
Важные моменты:
- При отсутствии ошибок возвращается
nullвместо “No error” - Пустые сообщения об ошибках заменяются на пустую строку
- Конструктор автоматически обрабатывает все параметры
Примеры использования
Базовый пример
try {
// Попытка обработки JSON
$result = json_decode($jsonString);
if (json_last_error() !== JSON_ERROR_NONE) {
throw new JsonException(
$jsonString,
JsonErrorCode::FromLastError(),
json_last_error_msg()
);
}
} catch (JsonException $e) {
// Обработка ошибки
echo "Ошибка: " . $e->getMessage();
echo "Код ошибки: " . $e->errorCode->name;
echo "JSON строка: " . $e->jsonString;
}
Расширенный пример
try {
// Пример с кастомным сообщением
throw new JsonException(
'{"invalid": json}',
JsonErrorCode::Syntax,
'Синтаксическая ошибка в JSON'
);
} catch (JsonException $e) {
// Логирование ошибки
error_log(
sprintf(
'Произошла ошибка JSON: %s (код: %s) при обработке JSON: %s',
$e->errorMessage,
$e->errorCode->name,
$e->jsonString
)
);
}
Рекомендации по использованию
-
При обработке ошибок:
- Всегда проверяйте код ошибки через
$errorCode - Используйте
$errorMessageдля детальной информации - Сохраняйте исходную JSON строку для отладки
- Всегда проверяйте код ошибки через
-
При выбросе исключения:
- Укажите конкретный код ошибки
- Добавьте информативное сообщение
- Передайте исходную JSON строку при возможности