Документация для разработчиков
Темная тема

ThrowException

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

Метод фиксирует исключение msg c кодом id. Получить последнее исключение можно методом $APPLICATION->GetException(). Нестатический метод.

Аналог в новом ядре D7: SystemException.

Параметры

ПараметрОписание
msg Текст ошибки или объект класса, наследованного от CApplicationException.
id Идентификатор ошибки.

Смотрите также

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

<?
if($login=='')
{
	global $APPLICATION;
	$APPLICATION->ThrowException('Имя входа должно быть заполнено.'); 
	return false;
}
?>  


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Вячеслав Докукин
Сообщение не промодерировано, возможны ошибки и неточности.
Вариант с выбросом исключения внутри метода
Код
use \Bitrix\Main\SystemException;

class simpleClass
{
    private $some;

    function __construct($some)
    {
        $this->some = $some;
    }
    public function setSome($some)
    {
        try {
            if(empty($some))
                throw new SystemException('Error - $some is null!');

            $this->some = $some;

        } catch (SystemException $e) {
            echo $e->getMessage();
        }
    }
   
    public function getSome()
    {
        return $this->some;
    }
}


$simpleClass = new simpleClass('test');

echo $simpleClass->getSome() . PHP_EOL;

$simpleClass->setSome('');

Вариант выброса исключения во внешнем коде использующем метод
Код
use \Bitrix\Main\SystemException;

class simpleClass
{
    private $some;

    function __construct($some)
    {
        $this->some = $some;
    }
    public function setSome($some)
    {
        if(empty($some))
   {
            global $APPLICATION;
       $APPLICATION->ThrowException('Имя входа должно быть заполнено.'); 
       return false;
   }
      
        $this->some = $some;
    }
   
    public function getSome()
    {
        return $this->some;
    }
}


$simpleClass = new simpleClass('test');

echo $simpleClass->getSome() . PHP_EOL;

if(!$simpleClass->setSome(''))
{
   global $APPLICATION;
   $exception = $APPLICATION->GetException();
   $message = $exception ? $exception->GetString() : 'Unknown application exception';
   die($message);
}else{
   echo $simpleClass->getSome() . PHP_EOL;
}
7
Иван Левый
Если нужно сделать 2 исключения одновременно - то нужно поступать следующим образом:

Код
global $APPLICATION;
$e = new CAdminException();

// Проверка корректности оценки
if ($arProps["MARK"]["VALUE"] < 1 || $arProps["MARK"]["VALUE"] > 5)
{
   $err = true;
   $e->AddMessage(   
     array (
      "text" => "Оценка должна быть от 1 до 5.",
      )
   );
}

// Проверка, указан ли объект для оценки
if (empty($arProps["ITEM_ID"]["VALUE"]))
{
   $err = true;
   $e->AddMessage(   
     array (
      "text" => "Не указан объект для оценки.",
      )
   );
}

// Если были ошибки - то возвращаем false
if ($err)
{
   $APPLICATION->ThrowException($e); 
   return false;
}


Так, если при добавлении элемента неверно заданы оба свойства, то в сообщении об ошибке появится 2 сообщения, а не одно.

Это работает как в админке, так и в визуальной части сайта.
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх