![]() |
![]() |
![]() |
|
v8: Почему не рекомендуют пользоваться Попытка? | ☑ | ||
---|---|---|---|---|
0
байт
10.02.10
✎
13:18
|
Почему не рекомендуют пользоваться
Попытка ..... Исключение ..... КонецПопытки;? |
|||
1
Волшебник
10.02.10
✎
13:18
|
кто не рекомендует? для чего?
|
|||
2
Salvador Limones
10.02.10
✎
13:18
|
Жмоты!
|
|||
3
Злобный Фей
10.02.10
✎
13:18
|
(0) Кто и кому не рекомендует?
|
|||
4
mirosh
10.02.10
✎
13:18
|
Я настоятельно рекомендую.
|
|||
5
0xFFFFFF
10.02.10
✎
13:18
|
(2) действительно...
|
|||
6
0xFFFFFF
10.02.10
✎
13:19
|
Давайте, пусть кто читает эту ветку по рекомендует автору пользоваться.
Я тоже рекомендую. |
|||
7
zbv
10.02.10
✎
13:20
|
идоры
|
|||
8
БТР
10.02.10
✎
13:21
|
Адназначно. Рекомендую автору пользоваться данной конструкцией.
|
|||
9
байт
10.02.10
✎
13:21
|
Я при проверке вместо условия Если возпользовался Попыткой, но почему-то более опытные программеры не рекомендуют ею пользоваться?
|
|||
10
Sakura
10.02.10
✎
13:22
|
(9) при проверке условия? О_о
код в студию |
|||
11
байт
10.02.10
✎
13:22
|
С ней все провелось без глюков!
|
|||
12
Злобный Фей
10.02.10
✎
13:22
|
(9) Код давай
|
|||
13
Sammo
10.02.10
✎
13:22
|
Вместо Если Попытка? интересная концепция...
|
|||
14
Ногаминебить
10.02.10
✎
13:23
|
"Попытка" лишает более опытного программера иллюзии, что он все контролирует. :)
|
|||
15
БТР
10.02.10
✎
13:23
|
(9) А ну ка позови сюда этих "опытных" программистов. Счас им тут легкие телесные повреждения причинять будут.
|
|||
16
Злобный Фей
10.02.10
✎
13:24
|
(14) Иногда попытка создает иллюзию того, что все работает правильно
|
|||
17
байт
10.02.10
✎
13:24
|
//Если ТЗОстаткиВО[Сч].ДатаОплатыПлановая <= Период Тогда
//МНач Попытка Документ.Движения.ВнеплановыеОплаты.Расход(Документ, РежимПроведения, Период, Договор, ТЗОстаткиВО[Сч].Приложение, ТЗОстаткиВО[Сч].Основание, ТЗОстаткиВО[Сч].ДатаОплатыПлановая, ТЗОстаткиВО[Сч].Сумма); ТЗОстаткиВО.Удалить(Сч); Исключение КонецПопытки; //МКон //КонецЕсли; |
|||
18
ДенисЧ
10.02.10
✎
13:24
|
Мда... ТАК её точно не стоит применять...
|
|||
19
Злобный Фей
10.02.10
✎
13:26
|
(17) Я Вам сейчас, любезный, травмы нанесу (цы)
|
|||
20
Ногаминебить
10.02.10
✎
13:26
|
гыгыгы. Надо будет взять на вооружение.
|
|||
21
БТР
10.02.10
✎
13:26
|
+(15) Сначала все таки тебе придется прописать касторочки. Чтоб мозги прочистились.
|
|||
22
Sakura
10.02.10
✎
13:27
|
(17) ну я даже не знаю, что тут сказать, чтобы было цензурно...
|
|||
23
mirosh
10.02.10
✎
13:27
|
(17) здесь лучше "Если". Попытка нужна когда обрабатывается ситуация, которая может привести к какой-нибудь ошибке, которую невозможно проанализировать в "Если".
|
|||
24
байт
10.02.10
✎
13:28
|
Ладно понял, будем работать дальше
|
|||
25
Ненавижу 1С
гуру
10.02.10
✎
13:28
|
Попытка должна применяться в тех случаях, когда программа воздействует на внешние ресурсы, поведение которых неизвестно и не может быть выяснено из программы
|
|||
26
БТР
10.02.10
✎
13:30
|
(24) Вообще то после Исключение принято писать Сообщить(ОписаниеОшибки()); или что то вроде этого иначе проку с этой попытки 0.
|
|||
27
mirosh
10.02.10
✎
13:30
|
(24) не за что.
|
|||
28
Злобный Фей
10.02.10
✎
13:33
|
(26) В случае (17) не только проку 0, тут вообще откровенное вредительство :)
|
|||
29
insider
10.02.10
✎
13:34
|
(26) необязательно
об авторе просто молчу - не представляю как до такого додуматься :)) |
|||
30
Sakura
10.02.10
✎
13:37
|
(29) смотря что курить в процессе кодинга :)
|
|||
31
БТР
10.02.10
✎
13:38
|
(29) Ну скажем так, существует гораздо больше ситуаций, когда надо обрабатывать исключение, чем когда этого делать не надо. По факту лучше это делать всегда.
|
|||
32
ice777
10.02.10
✎
13:39
|
(0) если работает - пусть работает.)
Это правильный критерий! |
|||
33
ice777
10.02.10
✎
13:40
|
(30) вариант не во что курить не рассматриваем?
|
|||
34
insider
10.02.10
✎
13:40
|
(30) ну да, от парламента, да еще и легкого - так не прет :)))
(31) на самом деле нет: например (конечно это можно и условими разрулить, но не всегда удобно) мне надо какой-то реквизит прописать, а вот есть ли он - хз, вот и "пытаюсь", а если не прошло - значит ничего не делаем; или если возникло, допустим, деление на 0 - присвоить некоей переменной некое значение или прервать цикл или еще чето сделать - в этом случае мне тоже описание ошибки не нужно, я в принципе понимаю, какая возникнет ошибка, потому и рисую try-except :) |
|||
35
Sakura
10.02.10
✎
13:41
|
(33) не во что курить? это как?!
(34) 1. ну да :) |
|||
36
Aleksey_3
10.02.10
✎
13:42
|
Странно вся КД написано на попытки и условии, иногда приходиться ремить, чтобы понять, где ошибка
|
|||
37
ДенисЧ
10.02.10
✎
13:42
|
(35) headless
|
|||
38
ice777
10.02.10
✎
13:42
|
(34) если есть вероятность деления на 0, обычно проверяют до деления.
|
|||
39
insider
10.02.10
✎
13:44
|
(38) можно проверить, просто иногда многоэтажное условие писать неудобно, а еще эска дурная в плане условий: вот напишу я Если к<>0 Тогда... а у меня к - строка или пустота или черт-знает-что - эска ругнется на невозможность сравнения разных типов и чтобы полчаса не описывать возможные варианты - проще использовать попытку, да и код полегче читается
|
|||
40
insider
10.02.10
✎
13:44
|
(37)уже и такие бывают? хм... а к чему клюв тогда крепится? :)
|
|||
41
Sakura
10.02.10
✎
13:45
|
(40) а ты угадай ))
|
|||
42
ДенисЧ
10.02.10
✎
13:46
|
(40) Э... К другому месту :-)
|
|||
43
ice777
10.02.10
✎
13:46
|
(39) Если саму операцию деления впихнуть в :
рез=?(x=0,0,у/x) ваще одна строка |
|||
44
insider
10.02.10
✎
13:46
|
(41) даже не могу предположить... какая-то чернобыльская порода дятлов с клювом на заднице, по всей вероятности :))
|
|||
45
БТР
10.02.10
✎
13:46
|
(34) Сообщить() это только один из способов обработки исключения, я говорил об обработке исключения в принципе.
Наличие реквизита проверяем через метаданные, деление на ноль проверяем не в попытке а сравнением знаменателя с нулем. |
|||
46
Sakura
10.02.10
✎
13:47
|
(37) оно и видно...
|
|||
47
Sakura
10.02.10
✎
13:47
|
(44) ну да, как-то так ))
|
|||
48
insider
10.02.10
✎
13:48
|
(43) при этом x - пустое значение и желаю успехов с таким кодом ;)
(45) если об обработке в принципе - согласен с реквизитом - тоже согласен, только писать длиннее :), а еще неудобно проверять наличие колонки в ТЗ или... ну придумать можно много, не всегда проверишь коротким условием :) |
|||
49
Serg_1960
10.02.10
✎
13:48
|
(офф, уфф) Забористая травка. Как меня проняло, после (17). Только сейчас дар речи вернулся.
Автор, я тебе - всё рекомендую! Но боюсь это уже не поможет. |
|||
50
ice777
10.02.10
✎
13:49
|
(48) допиши в ту же строку еще условие.. )
да ладно, вишь как кодить надо- см (0)! |
|||
51
insider
10.02.10
✎
13:51
|
(50) ну и на кой рисовать условий 20 штук вместо одной попытки? :)
если на характер - опишу, зачастую, но только смысла же нет P.S. все, записываюсь на курсы к автору, ага :)) |
|||
52
ice777
10.02.10
✎
13:51
|
(51) ты прав )
|
|||
53
ShoGUN
10.02.10
✎
13:52
|
(0)(17) Попытка без обработки исключения - нахрен не нужна. Надо не скрывать сообщение об ошибке, а причину ошибки устранять/обрабатывать каким-то образом.
|
|||
54
insider
10.02.10
✎
13:52
|
+51 кстати, если мне память не изменяет, эска проверяет все условия, т.е. если напишу типа Если (ПустоеЗначение(х)=0)И(x>0) - она все равно попытается сравнить пустой х с нулем, даже если уже знает, что там пусто
|
|||
55
ShoGUN
10.02.10
✎
13:54
|
(54) Восьмерка - не попытается.
|
|||
56
butterbean
10.02.10
✎
13:54
|
(54) в 8-ке уже не так
|
|||
57
Sakura
10.02.10
✎
13:54
|
(54) если И, то разумеется будет, в этом случае проверяются все условия :) если ИЛИ, то после проверки первого, если оно верно, второе может и не проверяться, хотя не уверена.
|
|||
58
insider
10.02.10
✎
13:55
|
(55),(56) тогда совсем другое дело, я, конечно, о v7 писал :)
(57) хм... не уверен, если честно |
|||
59
hhhh
10.02.10
✎
13:55
|
(57) да не проверяются там все условия.
|
|||
60
ShoGUN
10.02.10
✎
13:57
|
(57) "И" в восьмерке проверяется до первого ложного, "ИЛИ" - до первого истинного, и.т.д. В семерке это действительно отсутствует и условия проверяются всегда полностью.
|
|||
61
Ненавижу 1С
гуру
10.02.10
✎
13:58
|
ответ в (25) и точка
|
|||
62
insider
10.02.10
✎
13:59
|
(61) кто-то спорит? :)
|
|||
63
Serg_1960
10.02.10
✎
13:59
|
(60) +1 "Проверено. Мин - нет"(с) Не мною - типовой конфой.
|
|||
64
БТР
10.02.10
✎
14:00
|
(62) Я.
Попытку надо использовать в тех случаях когда есть вероятность вылета 1С с системной ошибкой. |
|||
65
ShoGUN
10.02.10
✎
14:00
|
(61) А "воздействие на внешние ресурсы" - это и чтение из внешнего источника? Тады да, наверное.
|
|||
66
Sakura
10.02.10
✎
14:00
|
(60) Буду в курсе )
|
|||
67
ShoGUN
10.02.10
✎
14:01
|
(64) Что есть "системная ошибка"? :)
|
|||
68
insider
10.02.10
✎
14:01
|
(64) ну там примерно так и написано, зависит от того, кто как понял :)
|
|||
69
insider
10.02.10
✎
14:01
|
+68 смотря что считать внешним ресурсом и т.д.
|
|||
70
ДенисЧ
10.02.10
✎
14:01
|
(64) Попытка от системной ошибки не спасёт.
|
|||
71
БТР
10.02.10
✎
14:02
|
(67) Что бы не получить сообщение от платформы : "Коврик будет свернут, приходите вчера".
|
|||
72
БТР
10.02.10
✎
14:03
|
(70) От некоторых спасает. Простейшая демонстрация - деление на 0.
|
|||
73
insider
10.02.10
✎
14:03
|
давайте определимся с терминами тогда: какая ошибка считается системной?
|
|||
74
ДенисЧ
10.02.10
✎
14:04
|
(72) Деление на 0 - это логическая ошибка
(73) Обработчик сообщения AfterPowerPlugIsOff() |
|||
75
ShoGUN
10.02.10
✎
14:04
|
(71) От платформы или от ОС? Если от платформы - то неправда, таких ошибок можно и без попытки избежать, за исключением (25). Если от ОС - то (70).
|
|||
76
insider
10.02.10
✎
14:07
|
(74) хорошая шутка :)
|
|||
77
БТР
10.02.10
✎
14:08
|
(75) От платформы. Ну и как ты разрулишь деадлок при проведении? Вот там как раз и вываливается системная ошибка, которую логикой кода можно и не обойти.
|
|||
78
ShoGUN
10.02.10
✎
14:09
|
(77) Ээээ... Ты хочешь сказать, что попыткой ты дедлок разрулишь? О_о
|
|||
79
Stim
10.02.10
✎
14:10
|
>>Надо не скрывать сообщение об ошибке, а причину ошибки устранять/обрабатывать каким-то образом.
Не всегда. Иногда нужно просто посчитать |
|||
80
insider
10.02.10
✎
14:11
|
(78) ага, научите! :)
|
|||
81
ShoGUN
10.02.10
✎
14:12
|
(79) Посчитать что?
|
|||
82
БТР
10.02.10
✎
14:12
|
(78) Почему нет? Документ, не сможет провестись, возникнет исключительная ситуация, в обработчике можно например вставить задержку и новую попытку проведения. А без попытки, сначала все "подвиснут", а потом вывалятся с системной ошибкой.
|
|||
83
insider
10.02.10
✎
14:12
|
(81) ошибки, наверное...
|
|||
84
Salvador Limones
10.02.10
✎
14:13
|
(78) А нельзя?
|
|||
85
Serg_1960
10.02.10
✎
14:13
|
(79) А если подумать - прежде чем писать? Что сказать то хотел? Посчитать ошибки что-ли? Дык это всё равно "...обрабатывать каким-то образом"
|
|||
86
insider
10.02.10
✎
14:13
|
(82) речь о v8?
|
|||
87
ShoGUN
10.02.10
✎
14:14
|
(86) Тоже задумался...
|
|||
88
ShoGUN
10.02.10
✎
14:14
|
(84) Именно взаимоблокировку? Ребят, научите, правда...
|
|||
89
insider
10.02.10
✎
14:15
|
(87) ну просто в восьмерке все чуток иначе и мне не хватает знаний оценить ответ, но если v7 - не понимаю...
|
|||
90
Salvador Limones
10.02.10
✎
14:15
|
(88)
У меня вот так есть в групповой обработке: СтатусПроведения=Ложь; Пока СтатусПроведения=Ложь цикл попытка Объект.Записать(РежимЗаписиДокумента.Проведение, РежимПроведенияДокумента.Неоперативный); СтатусПроведения=Истина; исключение ОписаниеОшибки=ОписаниеОшибки(); ОшибкаПрефикс="Microsoft OLE DB Provider for SQL Server:"; Если Найти(ОписаниеОшибки,ОшибкаПрефикс)=0 Тогда Сообщить(ОписаниеОшибки); СтатусПроведения=Ложь; Иначе Предупреждение("Кто-то блокирует. Подождём 10 секунд",10); КонецЕсли; КонецПопытки; конеццикла; |
|||
91
БТР
10.02.10
✎
14:15
|
(86) Судя по заголовку темы, да.
|
|||
92
Rabbit
10.02.10
✎
14:15
|
def main(tdir):
log('Путь к исходным данным: "%s"' % exceld) log('Путь к утилите подготовки ведомостей: "%s"' % _bankd) createdb() try: try: ProcessWorksheets(tdir) except Exception, exc: if exc.message == 'format': log('### Ошибка в исходных данных! Данные не получены!') else: log('### Неизвестный сбой при получении данных! Данные не получены!') raise exc else: if testdata(): export() finally: try: os.startfile(join(_logd, _LOGNAME)) except Exception: pass |
|||
93
insider
10.02.10
✎
14:17
|
(91) ну мы уже давно в философию ударились, мало ли :)
|
|||
94
Shurjk
10.02.10
✎
14:18
|
(0) Потому что в случае ошибки используя данную конструкцию, можно получит неправильный результат.
|
|||
95
ShoGUN
10.02.10
✎
14:22
|
(90) Э, батенька, не путай :) Это просто блокировка, а не дедлок :) Можно в принципе так писать, конечно... Но http://ru.wikipedia.org/wiki/Deadlock тут ни при чем.
|
|||
96
Stim
10.02.10
✎
14:26
|
(81) например, в ТП посчитать значения. Выбор - или лепить много условий на содержание числовой информации в ячейке или применить Попытку на считывание суммы
|
|||
97
ShoGUN
10.02.10
✎
14:31
|
(96) Да, есть такая неприятность с преобразованиями типов...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |