![]() |
|
v7: Как в 7.7 красиво вызывать исключение..? | ☑ | ||
---|---|---|---|---|
0
Злопчинский
25.02.20
✎
03:04
|
Есть конструкция, типа:
Попытка //здесь много кода Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; хочется внутри //здесь много кода породить исключительную ситуацию искусственно, например, по условию но чтобы при этом в табло не вываливалось "кривых" сообщений в ОписаниеОшибки(). исключительную ситуацию можно вызывать типа x=1/0, но в табло по описанию ошибки выпадет "ненужное" "Деление на 0". а хочется типа так Есть конструкция, типа: Попытка //здесь много кода Если Условие Тогда ВызватьИсключительнуюСитуацию("тутОписаниеОшибкиКотороеВернетсяСистемнойФункциейОписаниеОшибки()"); КонецЕсли; //здесь много кода Исключение Сообщить(ОписаниеОшибки()); КонецПопытки; ..как? |
|||
1
Aleksey
25.02.20
✎
04:46
|
goto ?
|
|||
2
Aleksey
25.02.20
✎
04:50
|
Перейти ~Метка!;
~ Метка!: Сообщить("Осуществлен переход по метке."); |
|||
3
Bigbro
25.02.20
✎
04:56
|
а конец попытки?
или мы так и останемся в попытке и будем накапливать стек погружаясь при повторных вызовах пока не опнемся где нибудь в переполнение? |
|||
4
Aleksey
25.02.20
✎
05:09
|
(3) он все равно из процедуры выдкт, тогда и почистит
|
|||
5
ADirks
25.02.20
✎
07:00
|
(0) если 1С++ подключается, то можно
ВыполняемыйМодуль :: ВыброситьИскл / Throw Синтаксис: ВыброситьИскл(ОбъектИскл, [ТекстИскл]) Параметры: ОбъектИскл - тип: Любой. Параметр, который потом можно получить при обработке исключения методом ПолучитьИсключение. ТекстИскл - тип: Строка. Сообщение об ошибке. По умолчанию "". Описание: Формирует исключение с объектом, который можно получить при перехвате/обработке исключения с помощью метода ПолучитьИсключение. При обработке исключения текст сообщения об ошибке можно получить с помощью глобальной функции ОписаниеОшибки(). Если исключение не обработано, этот текст будет выведен в окно сообщений. |
|||
6
ololoraise
25.02.20
✎
07:24
|
Можно закрыть 1с не штатном, только как уже не помню, господин Ёпрст знает)
|
|||
7
Злопчинский
25.02.20
✎
12:32
|
(5) вот это слово "ВыполняемыйМодуль ::" для меня пока загадка.
по описанию то что надо, но как это запилить в код? |
|||
8
pechkin
25.02.20
✎
12:39
|
(0) делай
сообщить(ТекстОшибки); |
|||
9
ADirks
25.02.20
✎
12:46
|
(7) типа того:
ВМ = СоздатьОбъект("ВыполняемыйМодуль"); ВМ.ВыброситьИскл(, "дадададад"); |
|||
10
pechkin
25.02.20
✎
12:47
|
(7) для начала нужно 1с++ подключить
|
|||
11
fisher
25.02.20
✎
12:48
|
ВызватьИсключение не предлагать?
|
|||
12
fisher
25.02.20
✎
12:49
|
А, черт! В 7.7 оно не умеет другую ошибку возвращать...
|
|||
13
dk
25.02.20
✎
13:27
|
тоже недавно искал
|
|||
14
8 bit
25.02.20
✎
13:48
|
(0) а почему именно "исключение" требуется?
Что мешает выводить предупреждение(текстпредупреждения, тамаут)? Ну возникла у тебя какая-то ситуация, выведи табло, пусть втыкают. А для тех, кто любит запустить формирование длительного отчета и свалить с рабочего места, установи таймаут. Параллельно никто не запрещает в журнал регистрации добавлять произвольные записи, а не "банальное деление на 0". |
|||
15
8 bit
25.02.20
✎
13:51
|
+(14) еще в объект текст можно было помещать важные уведомления. Висит окошко, наполняется текстом, читай сколько угодно. Непрочитанный текст можно было выводить при старте системы, пусть пользователь почитает, да повнимательнее.
|
|||
16
Simod
25.02.20
✎
14:16
|
ТекстОшибки = "";
Попытка ... Если <Условие> Тогда ТекстОшибки = "Мое сообщение"; Результат = 1 / 0; КонецЕсли; ... Исключение Если ТекстОшибки <> "" Тогда Сообщить(ТекстОшибки); Иначе Сообщить(ОписаниеОшибки()); КонецЕсли; КонецПопытки; |
|||
17
Злопчинский
25.02.20
✎
17:18
|
(9) понял, спсб
|
|||
18
Злопчинский
25.02.20
✎
17:18
|
(11) вызвать исключение работает внутри ветки исключение для передачи управления на более внешний обработчик.
|
|||
19
Ёпрст
гуру
25.02.20
✎
17:28
|
(0)
0/0 |
|||
20
Djelf
гуру
25.02.20
✎
18:40
|
(19) Не... это то же самое что и 1/0, предлагаю (по приколу /* никогда так не делайте*/, еще более угрожающее сообщение)
Сообщить("В обработке произошла полная "-" >>> (_!_) <<<, сколько нужно вычесть у программиста пока не знаем, из-за этого ему выдаем ошибку:"); |
|||
21
Злопчинский
25.02.20
✎
23:46
|
(20) погромист - хитрый, он поделит на 0 так, что никакого исключения не будет:
ПолнаяХерня = ПолнаяХерня/0; - исключения не будет... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |