Описание метода CMain::ThrowException(mixed msg, mixed id = false)

Метод CMain::ThrowException предназначен для создания и хранения исключения (ошибки) в текущем контексте приложения. В некоторых фреймворках (например, в 1С-Битрикс) он используется для последующего получения информации об ошибке посредством других методов (например, через GetException()). Несмотря на название “ThrowException”, метод не выбрасывает исключение в классическом понимании (как throw new Exception в PHP), а скорее регистрирует ошибку, которая может быть обработана позже.

CMain::ThrowException — описание метода

Сигнатура

CMain::ThrowException(
    mixed $msg,
    mixed $id = false
)

Параметры

  1. msg — основное сообщение об ошибке (тип: mixed).
    • Чаще всего передается строка, описывающая проблему, например: "Неправильный формат данных".
    • При необходимости может быть передан другой тип (например, массив) в соответствии с логикой вашего проекта.
  2. id (необязательный) — идентификатор ошибки (тип: mixed).
    • Может служить для уточнения типа ошибки или её кода: 1001, "USER_NOT_FOUND", false и т. п.
    • По умолчанию равен false.

Возвращаемое значение

Метод не возвращает значение (в классических реализациях — void). Результат работы метода хранится во внутренней структуре класса CMain и может быть получен через специальный метод чтения, например CMain::GetException(). Нестатический метод.

Область применения

  • Регистрация ошибок или проблемных ситуаций внутри кода, чтобы в дальнейшем обработать их централизованно.
  • Упрощение механизма работы с ошибками в фреймворках или CMS (например, в 1С-Битрикс), когда не требуется бросать реальные PHP-исключения.

Особенности реализации и поведения

  • При многократном вызове метод может перезаписывать или дополнять уже существующее сообщение об ошибке (зависит от реализации).
  • Для получения зарегистрированных ошибок используется метод типа CMain::GetException(). Например:
    $ex = $APPLICATION->GetException();
    if ($ex) {
        echo $ex->GetString();
    }
  • Параметр id позволяет дифференцировать типы ошибок или их коды.

Примеры использования

Пример 1. Простое использование с текстовым сообщением

// Допустим, у нас возникла ошибка при обработке формы:
$APPLICATION->ThrowException("Поля формы заполнены некорректно");

// Далее, чтобы получить сообщение:
$ex = $APPLICATION->GetException();
if ($ex) {
    echo "Ошибка: " . $ex->GetString();
}

Пример 2. Использование с идентификатором (кодом ошибки)

// Возникла ошибка с кодом "USER_NOT_FOUND"
$APPLICATION->ThrowException("Пользователь не найден", "USER_NOT_FOUND");

// Далее вы можете проверить тип ошибки:
$ex = $APPLICATION->GetException();
if ($ex) {
    if ($ex->GetID() === "USER_NOT_FOUND") {
        // Обработка ситуации, когда пользователь не найден
    }
    echo $ex->GetString(); // "Пользователь не найден"
}

Пример 3. Использование без указания явного ID

$APPLICATION->ThrowException("Неизвестная ошибка во время обработки платежа");
// По умолчанию $id = false

Пример 4. Передача сложной структуры в msg

$errorData = [
    'message' => 'Невозможно сохранить данные',
    'fields'  => ['NAME', 'EMAIL']
];
$APPLICATION->ThrowException($errorData, 500); // 500 — условный код
Теги:  справочник

Интернет-магазин от 120 000 руб., срок от 4 недель

Платформа для продажи товаров или услуг. Включает интерактивные формы обратной связи в каждой карточке товара, а также множество статичных и динамичных разделов.

Корпоративный сайт от 60 000 руб., срок от 3 недель

Готовый информационный ресурс, включающий лицензию на 1С-Битрикс «Стандарт», технологию «Композитный сайт».

Лендинг от 25 000 руб., срок от 2 недель

Компактный сайт, идеально подходящий для старта. На одной странице можно представить ключевые преимущества вашей компании и разместить форму для обратной связи.