|
|
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Всем доброго дня! Пишу процедуру в Firebird 2.5, где в одном блоке получается два WHEN. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. почему-то на выходе получается записи из обоих ексепшнов, и MY_EXCEPTION и ANY последовательно. Я что-то не так делаю? Разве он не должен был обработать только мой Ексепшн? А пошагово IbExpert вообще гонит - выскакивает окно My_Exception и на этом тестирование заканчивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 13:51 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
aidynchik, Firebird-Language-Reference-Russian.pdfОператор WHEN … DO используется для обработки ошибочных ситуаций и пользовательских исключений. Оператор перехватывает все ошибки и пользовательские исключения, перечисленные после ключевого слова WHEN. Если после ключевого слова WHEN указано ключевое слово ANY, то оператор перехватывает любые ошибки и пользовательские исключения, даже если они уже были обработаны в вышестоящем WHEN блоке. Firebird-Language-Reference-Russian.pdf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 13:59 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, спасибо! Коротко и по делу... Почему-то у Борри написано, что ANY - означает перехват исключение, которое НЕ БЫЛО обработано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:06 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
aidynchik, в этой документации учтены найденные особенности и/или баги, в том числе и те что обнаружились на sql.ru Попробуй из 1 блока EXIT или SUSPEND сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:13 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, я не могу EXIT сделать, этот блок в цикле, мне надо в конце вытащить один лог по всем записям. Выкинуть ANY вообще что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:33 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
aidynchik, введи дополнительную переменную-флаг. Который будешь устанавливать в первом обработанном блоке, а в ANY проверять его. Только не забывай в начале иттерации цикла сбрасывать его ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:40 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Симонов Денисв этой документации учтены найденные особенности и/или баги, в том числе и те что обнаружились на sql.ru В этом случае там должно быть указано, что не надо ставить WHEN ANY в ряд с любым другим обработчиком. Оно не только работает неожиданно (CORE-3275), оно ещё и данные потерять может (CORE-4424). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:55 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
DS> В этом случае там должно быть указано, что не надо DS> ставить WHEN ANY в ряд с любым другим обработчиком Да нет, можно ставить, просто код сложный получится и, для не знающих особенностей и багов, - неожиданный. DS> Оно не только работает неожиданно (CORE-3275), DS> оно ещё и данные потерять может (CORE-4424). Там ещё с саспендами проблема была, точно. В трекере я соотв. тикет не нашёл, правда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 15:57 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТам ещё с саспендами проблема была, точно. В трекере я соотв. тикет не нашёл, правда. Потому что это не проблема, а "by design". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 16:22 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov> Потому что это не проблема, а "by design". Что именно "by design" ? Саспенды в обработчиках не запрещены. Так что ИМХО там именно баг - наверное, из-за сэйвпоинтов или ещё из-за чего-того с этим связанного. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 16:37 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамИМХО там именно баг А что именно ты называешь багом? Покажи тесткейс. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 16:47 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
DS> А что именно ты называешь багом? Покажи тесткейс. У меня его записанного нет, а по памяти я щас может и не воспроизведу. Если кратко - то при наличии одноуровневых цепочке When-ов и саспендах в них вываливалась какая-то ошибка синхронизации или что-то вроде того. В итоге приходилось код усложнять. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 17:04 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 17:08 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
dimitr> ты про это? Да, оно, только с уточнениями в комментах, ибо ни автономка, как ты сказал, не нужна, ни рерэйз не нужен был - достаточно просто саспенда в первом обработчике. Вроде легко воспроизводимый баг, чего не пофиксил-то, совместимость боишься сломать? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:13 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам, я с ним даже не разбирался еще, просто повесил на себя на будущее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:32 |
|
||
|
Обработка 2-х и более исключений в одном блоке
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамВроде легко воспроизводимый баг, чего не пофиксил-то То, что он воспроизводится, не значит, что он легко чинится. Блоки WHEN обрабатываются с другими флагами из-за чего SUSPEND там одноразовый. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:40 |
|
||
|
|

start [/forum/topic.php?fid=40&tid=1563189]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 358ms |

| 0 / 0 |
