Использование ВызватьИсключение

1. TODD22 18 27.12.15 12:02 Сейчас в теме
Здравствуйте.

Когда правильно использовать функцию ВызыватьИсключение?

	Если Параметры.Свойство("АвтоТест") Тогда // Возврат при получении формы для анализа.
		Возврат;
	КонецЕсли;
	
	Если НЕ Пользователи.ЭтоПолноправныйПользователь(, Истина) Тогда
		ВызватьИсключение НСтр("ru = 'Недостаточно прав доступа.
		                             |
		                             |Работа с регламентными и фоновыми заданиями
		                             |выполняется только администраторами.'");
	КонецЕсли;
Показать

Вот пример кода из типовой. В первом условие используется "Возврат". А во втором условии вызывается исключение.
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 27.12.15 12:59 Сейчас в теме
(1) TODD22, что значит правильно?
Если ВызватьИсключение применяется в блоке Попытка-Исключение, то в исключение можно перехватить и обработать.
Если не в блоке, то перехват будет платформой и обработано стандартно: выдаст предупреждение пользователю с текстом, который указан в параметре ВызватьИсключение.
3. TODD22 18 27.12.15 13:19 Сейчас в теме
(2) spacecraft,
что значит правильно?

Не совсем понимаю когда надо использовать ВызовИсключения.

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

Не понимаю почему именно вызывается исключение а не описывается программная обработка условия.
4. alljoke 27.12.15 13:30 Сейчас в теме
(3) TODD22, скорей всего чтобы не выполнять дальнейший код, тем самым не загружать сервер.
5. TODD22 18 27.12.15 13:45 Сейчас в теме
(4) alljoke, Так можно в условие вставить дальнейший код. И он просто не выполнится. Почему именно исключение ? :)
12. Restart 08.06.20 23:19 Сейчас в теме
При использовании вложенных транзакций в конце блока Исключение рекомендуется добавить оператор ВызватьИсключение. В противном случае исключение не будет передано выше по стеку вызовов, там не сработает обработка исключения, внешняя транзакция не будет явным образом отменена и платформа вызовет исключение «В данной транзакции происходила ошибка»
(5)
Merkalov; user1835472; ilego; +3 Ответить
6. spacecraft 27.12.15 13:47 Сейчас в теме
(3) TODD22, Вот чтобы не писать все возможные обработки не штатной ситуации.
ВызватьИсключение прерывает весь дальнейший код, без возврата. Игнорируется вся цепочка вызывов. Обратного возвращение по цепочке не происходит.
7. TODD22 18 27.12.15 13:48 Сейчас в теме
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ВызватьИсключение НСтр("ru='Обработка не предназначена для непосредственного использования.'");
	
КонецПроцедуры
Показать


Или вот например почему не Отказ=Истина? Или это что бы показать сообщение пользователю так сделали? Процедура же на сервере выполняется.
8. ekaruk 4896 27.12.15 13:50 Сейчас в теме
(7) TODD22, Для однозначности.
Вызвать исключение используется, если нужно однозначно и безусловно прервать выполнение программы.
Merkalov; criptid; SagittariusA; YanTsys; TODD22; m-serg74; +6 Ответить
9. m-serg74 46 27.12.15 13:53 Сейчас в теме
(7) TODD22, Отказ нужно где то обрабатывать, а вот к примеру ты что то пишешь... вызываешь какую то функцию она тебе что то возвращает, но если тебе нужно не зависимо от того что она возвращает остановить процесс, если была ошибка, вставляешь в вызываемой функции ВызватьИсключение и все... ну а потом уже допиливаешь обработчики чтоб не было исключений
Misanets; TODD22; chel-new; +3 Ответить
10. spacecraft 27.12.15 13:57 Сейчас в теме
(7) TODD22, в данном случае объект (документ, обработка) можно открывать не только интерактивно, но и программно. И на этом построена логика вызывающего метода. Если сделать Отказ = Истина, то при программном вызове возможно будет выброшено исключение на работу с ней. Попытка что-то записать в поле, или вызов метода. Но т.к. создание формы не произошло, выбросится исключение в не нужном (не предсказуемом) месте.
А так, полностью выбрасывается исключение, без возврата.
11. TonyBreza 25.05.20 19:34 Сейчас в теме
Почитайте тут как правильно вызывать исключения и использовать попытку. https://its.1c.ru/db/v8std#content:499:hdoc
13. Xershi 1474 08.07.20 14:09 Сейчас в теме
В первые пришлось самому писать код с вызовом исключения.
Если исключение не в попытке, то оно просит параметр. Думал вывести сообщение и затем исключение.
Как итог текст сообщения в параметр добавил и вопрос закрыт. Сообщение не выводил.
14. user1455510 17.08.22 06:18 Сейчас в теме
Есть ньюанс, с 8.3.17 любое исключение показывается пользователю как "Возникла непредвиденная ошибка"
(если не включен режим отладки) и требует сформировать отчет об ошибке.


Новое отображение ошибок в 1С
15. gybson 18.08.22 14:53 Сейчас в теме
Когда надо выскочить из кол-стэка, подразумевается, что аварийно.
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)