Описание метода 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 — условный код
Теги:  справочник


Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Техническая поддержка

выполняется с сайтами на основе любых CMS

от 5 000 рублей
Оптимизация производительности действующих интернет-проектов, наполнение и сопровождение, полная техническая поддержка и продвижение в поисковых сетях.

* стоимость зависит от объема и сложности выполняемых работ, используемой CMS.

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack на основе готовой верстки

* если нет верстки, то возможность верстать с Figma в режиме редактора

Лендинг

от 3 дней

от 25 000 рублей

Разработка одностраничного сайта на платформе Битрикс

* стоимость зависит от наличия верстки, использования готового решения и т.д.