|
Использование Попыток в коде | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
Азат
30.12.11
✎
03:33
|
Как часто вы используете конструкции вида Попытка-Исключение-Конец попытки? К слову, попала в руки одна обработочка на пару-тройку тысяч строк, так в ней через каждые 20-30 строк очередная попытка...
|
|||||||||||||
1
H A D G E H O G s
30.12.11
✎
03:35
|
Попытка - неглубоко закопанное тело.
Оч часто |
|||||||||||||
2
Андрюха
30.12.11
✎
03:35
|
Наверное не очень часто
Время от времени |
|||||||||||||
3
Андрюха
30.12.11
✎
03:36
|
А вот в Дельфе - там да, практически постоянно try-except/finally
Оч часто |
|||||||||||||
4
rotting
30.12.11
✎
03:52
|
часто
Оч часто |
|||||||||||||
5
ParaWiz
30.12.11
✎
03:54
|
почему тема ограничивается снеговиком ?
Время от времени |
|||||||||||||
6
ZanderZ
30.12.11
✎
04:04
|
бывает
Время от времени |
|||||||||||||
7
Grusswelle
30.12.11
✎
04:55
|
Плохо это... Но приходится.
Редко |
|||||||||||||
8
Kraft
30.12.11
✎
05:16
|
(7) +многа
Редко |
|||||||||||||
9
Упанишады
30.12.11
✎
05:47
|
Чем больше работаю на 8.Х, тем реже. Попытка может помочь, когда не знаешь, как штатно обработать ту или иную ситуацию. По мере появления знаний код становится более стандартным.
Время от времени |
|||||||||||||
10
skunk
30.12.11
✎
05:52
|
стараюсь как можно реже ... только в тех случиях когда выполнить проверку всех месячных другими средствами нельзя ... причем не важно где ... в ван си или паскале ...
зы: второй самый некошерный оператор после гоуту Время от времени |
|||||||||||||
11
Simod
30.12.11
✎
06:17
|
Тупой опрос. Использование обработки исключений не определяется "нравится - не нравится" или "часто - редко", а необходимостью.
Общим недостатком, для большинства ЯП, является увеличение времени выполнения и расхода используемой памяти. Компиляторы почти не оптимизируют код внутри этой конструкции. Как это реализовано внутри 1С не знаю, не видел никакой информации, но думаю аналогично остальным ЯП. (10) В отличии от гоуту обработка исключений не является анахронизмом и порой не имеет никакой замены. Может ты просто "не умеешь их готовить?". |
|||||||||||||
12
alkov
30.12.11
✎
06:37
|
Всё зависит от того, что делает код
Время от времени |
|||||||||||||
13
forforumandspam
30.12.11
✎
06:39
|
Редко, но иногда без них нельзя.
Редко |
|||||||||||||
14
guitar_player
30.12.11
✎
06:40
|
По необходимости
Время от времени |
|||||||||||||
15
skunk
30.12.11
✎
06:47
|
(11)если ты незнаешь как проверить месячные своих подруг ... и занимаешься секасом чисто в презервативах ... это еще не значит, что ты получаешь кайф от секаса
|
|||||||||||||
16
IamAlexy
30.12.11
✎
06:49
|
(15) бгыыыы
это типа ты его гипнотизируешь: "ты не получаешь кайф от секса.. ты исптываешь страх боль и отчаяние занимаясь сексом.." ? типа надеешся убедить ? |
|||||||||||||
17
skunk
30.12.11
✎
06:50
|
нет ... просто объясняю, что кроме онанизма есть куча других интересных вещей
|
|||||||||||||
18
guitar_player
30.12.11
✎
06:54
|
(15), (17) у вас проблемы? Вы хотите поговорить об этом?)
|
|||||||||||||
19
Simod
30.12.11
✎
06:56
|
(15) Иди протрезвей...
(16) Молодца, хорошо лизнул. |
|||||||||||||
20
skunk
30.12.11
✎
06:58
|
(19)я трезвый ... в отличии от тебя
|
|||||||||||||
21
Азат
30.12.11
✎
08:16
|
ок, а чем плохо использование попытки кроме того, что компилятор не оптимизирует код? ну такие вещи, как абсолютная нечитабельность кода даже не рассматриваем
|
|||||||||||||
22
dk
30.12.11
✎
08:29
|
в основном при потоковом создании / изменении / проведении документов / справочников / файлов
Редко |
|||||||||||||
23
dk
30.12.11
✎
08:29
|
потоковом = массовом
|
|||||||||||||
24
GROOVY
30.12.11
✎
08:31
|
Попытка - это транзакция, использование ее в других транзакция может привести к не всегда очевидным последствиям отмены транзакции-родителя.
Использование оператора Попытка оправдано лишь в случае когда нет другого способа проверки корректности исполняемого кода. К примеру удаление файла с диска, есть файл или нет мы гарантировать системе не можем. (Для особо дотошных: после проверки на то что файл физически существует и до строки с удалением этого файла он может быть удален другим процессом). |
|||||||||||||
25
Ненавижу 1С
гуру
30.12.11
✎
08:34
|
как можно реже
Редко |
|||||||||||||
26
ado
30.12.11
✎
08:46
|
(11) +1
Время от времени |
|||||||||||||
27
Lex_Liven
30.12.11
✎
08:53
|
В крайних случаях, когда голова уже пухнет от конструкций "Если/ИначеЕсли/ИначеЕсли/...", а ошибка все еще продолжает выпадать. Считаю, что код должен предусматривать все варианты развития событий и всегда адекватно себя вести.
Время от времени |
|||||||||||||
28
y88
30.12.11
✎
08:56
|
(24) спасибо
хотя видел код загрузки данных в базу с кучей попыток и eval-ов - работал долго, но правильно Время от времени |
|||||||||||||
29
Aleksey
30.12.11
✎
08:57
|
(0) Это ты обработку от КД не видел. Там ВСЕ процедуры обернуты в попытку/исключение
|
|||||||||||||
30
Азат
30.12.11
✎
08:58
|
(29) я хз, меня с детства учили, что и попытка, и метка - одного уровня зло
|
|||||||||||||
31
Dmitrii
гуру
30.12.11
✎
09:01
|
(24) +1 Присоединяюсь.
Использую только в тех случаях, когда проверить корректность исполняемого кода невозможно стандартными методами, и еще когда трудоемкость локализации всех возможных ошибок значительно превышает разумные пределы (при сложных обменах с загрузками/выгрузками часто бывает). Время от времени |
|||||||||||||
32
skunk
30.12.11
✎
09:11
|
вот как раз таки при загрузках/выгрузках за такое надо сразу руки отрывать
|
|||||||||||||
33
ДенисЧ
30.12.11
✎
09:14
|
(30) Вот такое фиговое детство...
|
|||||||||||||
34
Волесвет
30.12.11
✎
09:18
|
кг/ам
зы если есть необходимость |
|||||||||||||
35
Scooter
30.12.11
✎
09:29
|
по необходимости
Время от времени |
|||||||||||||
36
SerMaxim
30.12.11
✎
09:32
|
По сути того как это реализовано в 1С использовать попытки не правильно!
Никогда |
|||||||||||||
37
Stepa86
30.12.11
✎
09:34
|
(24) попытка - это транзакция??? а чо она тогда не откатывается, когда в исключение упадет?
я у нас для других программистов вот такую заметку про попытку сделал: 1) Чем их меньше, тем лучше. Рассматривайте попытку и переход по исключению в блок исключение как неявный GoTo. 2) Если можно обойтись без попытки, нужно обойтись без попытки. Например при преобразовании строки в число можно написать
и ловить исключение каждый раз при возведенном флажке "Останавливаться на ошибке" или можно написать сложнее:
но код не будет генерить ненужных исключений 3) любая ошибка внутри транзакции рвет эту транзакцию, поэтому внутри транзакции можно не пытаться ловить ошибки, если не предусмотрен полный выход из транзакции 4) если есть подозрения, что код может работать некорректно, то нужно сделать все, чтобы устранить эту неопределенность, а не совать его в попытку, чтоб разбирались другие программисты 5) за код типа
будут отстреливаться лишние органы. В блоке исключение ВСЕГДА (ВСЕГДА, блеать!!!) должен быть код по отработке, иначе потом нереально найти что рвет транзакцию 6) Использовать попытку нужно -для проверки входных параметров в код, которые мы не можем проверить еще выше. Это актуально для методов-баррикад (Совершенный код, 198 страница) -для вызова методов, предугадать результат которых мы не можем, например вызов кода внешней обработки, которая будет независимо обновляться (те же баррикады) -для вызова методов, которые сами генерят исключения, например подключение компоненты Редко |
|||||||||||||
38
Dmitrii
гуру
30.12.11
✎
09:38
|
(32) >> при загрузках/выгрузках за такое надо сразу руки отрывать
Наверное так, но иногда описание проверок на все возможные ошибки данных по трудозатратам тупо выходит за рамки разумного. Именно о таких случаях я говорю. |
|||||||||||||
39
vmv
30.12.11
✎
09:44
|
редко и если использую, то там либо один оператор либо вызов метода.
Все остальные потенциально "опасные" блоки кода стараюсь выносить в фкнкции которые возвращают булевый или значащий результат. Возврат и есть признак успеха, а не попытка. За объемные блоки кода в попытках предлагаю растреливать тремя патронами - в пах, в живот и тольколько потом в голову Редко |
|||||||||||||
40
Fragster
гуру
30.12.11
✎
09:47
|
попытка - рулез, чтобы выпасть сразу из большого количества вложенных конструкций. просто нужно уметь готовить
Оч часто |
|||||||||||||
41
Fragster
гуру
30.12.11
✎
09:47
|
(40)+ еще и вызватьИсключение, соответственно, юзаю
|
|||||||||||||
42
Fragster
гуру
30.12.11
✎
09:48
|
(21) нечитаемость? гыгы... верпишель из 10 вложенных если, конечно, круче...
|
|||||||||||||
43
Fragster
гуру
30.12.11
✎
09:48
|
*вермишель
|
|||||||||||||
44
Fragster
гуру
30.12.11
✎
09:49
|
(30) метка не указывает направление перехода, попытка - указывает.
|
|||||||||||||
45
aleks-id
30.12.11
✎
09:52
|
попытка фигня. мне попадалась рарусова поделка в которой на 1000 строк было около 20 транзакций
|
|||||||||||||
46
Reset
30.12.11
✎
09:54
|
Только тогда, когда это нельзя без.
Редко |
|||||||||||||
47
vladenoff
30.12.11
✎
10:23
|
метод явно для самых ленивых. Напрягаемся, стараемся без исключений.
Редко |
|||||||||||||
48
Demasiado
30.12.11
✎
10:29
|
Практически .... Очень сильно разоптимизирует код.
Никогда |
|||||||||||||
49
бомболюк
30.12.11
✎
10:32
|
Попытка - если только пытаешься что то сделать за пределами 1С (прочитать/записать файл или стороннюю базу данных, установить соединение с удаленным сервером и проч.). Внутри 1С почти никогда.
Время от времени |
|||||||||||||
50
Hans
30.12.11
✎
10:51
|
что все таки лучше?
Если х=0 Тогда y=0 Иначе y=5/x КонецЕсли или попытка y=5/x Исключение y=0 КонецПопытки |
|||||||||||||
51
Азат
30.12.11
✎
10:54
|
(50) у = ?(х = 0, 0, 5/х)
|
|||||||||||||
52
GROOVY
30.12.11
✎
10:58
|
(37) Конечно транзакция. Все операции с БД внутри Попытка Исключение производятся в неявной транзакции.
|
|||||||||||||
53
Stepa86
30.12.11
✎
10:59
|
(50) сделай второе в обработке проведения... и будет тебе геморой
|
|||||||||||||
54
Reset
30.12.11
✎
11:01
|
(53) Не будет,т.к. это не операция с бд (понятно, что метод от этого менее уё;%"ым не становится)
|
|||||||||||||
55
Stepa86
30.12.11
✎
11:02
|
(52) транзакция - механизм, который позволяет записать в базу или все или ничего
если я напишу: Попытка СделатьЗапись1(); СделатьЗапись2(); п=1/0; СделатьЗапись3(); Исключение то записи 1 и 2 останутся в базе, до записи 3 не дойдет. Где я туплю? |
|||||||||||||
56
Reset
30.12.11
✎
11:02
|
ну + отладчик будет остнавливаться "при ошибке", что тоже ху.. нехорошо
|
|||||||||||||
57
Reset
30.12.11
✎
11:03
|
(55) +1
я тоже не понял сентенцию про транзакцию) |
|||||||||||||
58
ThreeTONE
30.12.11
✎
11:04
|
по мере надобности.
Редко |
|||||||||||||
59
GROOVY
30.12.11
✎
11:04
|
Я торможу! Сорри. Исключение в попытке вызывает исключение в транзакции. Сама конструкция не является транзакцией.
|
|||||||||||||
60
Stepa86
30.12.11
✎
11:06
|
(54) вроде б любое исключение рвет транзакцию. Даже если это не так, то лучше не дергать лишний раз судьбу за выпирающие органы. Ведь код в попытке, который ничего не делал с БД со временем может начать делать...
|
|||||||||||||
61
FoXSkr
30.12.11
✎
11:08
|
3. Время от времени
|
|||||||||||||
62
rutony
30.12.11
✎
11:09
|
Без попытки много чего не сделать...
Хм... Решил посмотреть как там поживает моя самая большая обработка по поводу Попыток... Количество слов: 33008 Количество знаков (без пробелов): 419823 Количество строк: 16451 Количество слов "Попытка": 121 Время от времени |
|||||||||||||
63
Азат
30.12.11
✎
11:10
|
(62) много чего? примеры можна?
|
|||||||||||||
64
бомболюк
30.12.11
✎
11:11
|
(63) +1. Имхо с объектами 1С без попыток можно почти все сделать.
|
|||||||||||||
65
rutony
30.12.11
✎
11:12
|
(63) Сразу так на вскидку:
Контроль записи файла... Работа с драйверами ТО... |
|||||||||||||
66
Reset
30.12.11
✎
11:14
|
(65) Это очевидные примеры. Тема похоже про другое... как часто используется, если "лень писать какие-то проверки"
|
|||||||||||||
67
Азат
30.12.11
✎
11:15
|
(65) это все - не так часто используемые операции... а внутри 1С 90+% ИМХО без попытки норм
|
|||||||||||||
68
Magistr001
30.12.11
✎
11:16
|
я один прочитал: ПЫТОК ???
|
|||||||||||||
69
Reset
30.12.11
✎
11:16
|
внутри 1С - запись, проведение. На 100% невозможно быть уверенным в их успешности никогда
|
|||||||||||||
70
DmitryPavlik
30.12.11
✎
11:16
|
При записи данных никак без неё ))
Время от времени |
|||||||||||||
71
KishMish
30.12.11
✎
11:18
|
когда лень предусматривать все возможные варианты
Время от времени |
|||||||||||||
72
ErrorEd88
30.12.11
✎
11:18
|
часто выручает
Оч часто |
|||||||||||||
73
Aleksey_a_z
30.12.11
✎
11:19
|
Ну например попытка инициализации, подключения внешней компоненты как вы реализуете без "Попытка, исключение"
Никогда |
|||||||||||||
74
Aleksey_a_z
30.12.11
✎
11:20
|
(73) + ошибся
Редко |
|||||||||||||
75
Stepa86
30.12.11
✎
11:20
|
(62) у меня в конфе на 37000 строк - 37 попыток
Никогда |
|||||||||||||
76
Fish
30.12.11
✎
11:21
|
(71) Я бы сказал так: когда невозможно или слишком сложно предусмотреть все варианты :)))
Ради интереса, поискал в типовой УПП "КонецПопытки" - найдено более 4000 :)))) Редко |
|||||||||||||
77
fisher
30.12.11
✎
11:22
|
Чаще всего при работе с внешними объектами. Т.е. по прямому назначению, так сказать.
Для упрощения кода - практически никогда. Даже если с проверками сложнее - такой код читабельнее, дает больше информации и не оставляет вопросов. Когда встречаю использование в чужом коде использование попытки без явной на то причины - сразу понимаю, что нужно быть готовым и к другим "сюрпризам грамотного кодинга". Редко |
|||||||||||||
78
bodri
30.12.11
✎
11:24
|
по мере необходимости, но ка правило...
Время от времени |
|||||||||||||
79
Пopyчик-З
30.12.11
✎
11:27
|
Не поленился, посчитал сколько у нас в текущем проекте. С десяток набралось, но некоторые можно выкинуть..
Время от времени |
|||||||||||||
80
rutony
30.12.11
✎
11:35
|
(75) Ну обработка работает с фронт-системами, поддерживает 6-7 разных фронтов, там без попыток не обойтись...
|
|||||||||||||
81
Stepa86
30.12.11
✎
11:47
|
(80) я беседу поддержать, а не потроллить =)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |