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

Сигнатура
CMain::ThrowException(
mixed $msg,
mixed $id = false
)
Параметры
-
msg — основное сообщение об ошибке (тип:
mixed
).- Чаще всего передается строка, описывающая проблему, например: "Неправильный формат данных".
- При необходимости может быть передан другой тип (например, массив) в соответствии с логикой вашего проекта.
-
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 — условный код