|
|
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Всем привет! Прошу помощи... Программирую на C++ Builder 6... Обрабатываю xml-файл пытаюсь получить значение атрибута вот так SG_Paket->Cells[3][1] = RootNode->ChildNodes->Nodes[1]->Attributes[WideString("EDReceiver")]; Но дело в том что этот атрибут может быть, а может и нет. Как обработать сию ситуацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 12:54 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Подозреваю, что вернет NULL, так как установка аттрибуту значения NULL удаляет аттрибут. Ну а если нет, то наверно выбрасывает исключение, тогда бороться как try{}catch ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 15:57 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Примерно вот так try{ SG_Paket->Cells[3][1] = RootNode->ChildNodes->Nodes[1]->Attributes[WideString("EDReceiver")]; }catch(...){SG_Paket->Cells[3][1] = 0;} Работает, но только сначала ругается благим матом, а потом ноль пишет, как сделать так, чтобы ноль писался без сообщений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:11 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
АлексейПыриковкак сделать так, чтобы ноль писался без сообщений? Abort ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:20 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
А поконкретнее? Куда именно писать Abort()... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:23 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
АлексейПыриковА поконкретнее? Куда именно писать Abort()... В catch. Чтобы заглушить благой мат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:27 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Если вот так try{ SG_Paket->Cells[3][1] = RootNode->ChildNodes->Nodes[1]->Attributes[WideString("EDReceiver")]; }catch(...){SG_Paket->Cells[3][1] = 0;Abort();} то не помогает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:29 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
ТОчнее помогает, но и выполнение функции заканчивается, а у меня после этого ещё куча операторов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:32 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
АлексейПыриковТОчнее помогает, но и выполнение функции заканчивается, а у меня после этого ещё куча операторов... __finally ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:41 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Опять же... А как именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:44 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.__finally ну что ты такое пишешь, у него на исключении вся функция прервется всё равно. Надо строчку, где ловится исключение, вынести отдельной функцией, в которой будет try ... catch и возвращать из нее осмысленный результат Хотя думается мне, что в самой библиотеке должен быть механизм проверки, есть ли нужный атрибут Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:44 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
АлексейПыриковОпять же... А как именно? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:45 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.Сойдёт? Кстати, когда-то замечал я какие-то неправильности с многоэтажными try ... catch ... finally, с тех пор просто выношу каждый блок в отдельную функцию Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:47 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Карабас Барабас ну что ты такое пишешь, у него на исключении вся функция прервется всё равно. Можно тоьлко нужный кусок обтрайкэчить... Карабас Барабас Надо строчку, где ловится исключение, вынести отдельной функцией, в которой будет try ... catch и возвращать из нее осмысленный результат Согласен, так получше будет, особенно если используется не только в одном месте. Карабас БарабасХотя думается мне, что в самой библиотеке должен быть механизм проверки, есть ли нужный атрибут А вот это уже не знаю, XML не пользовал ишо )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:52 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Dmitrii K.А вот это уже не знаю, XML не пользовал ишо )) аналогично :) интересно, кто-нибудь из отвечавших пользовал ?? Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2006, 16:55 |
|
||
|
Обработка исключения при разборе XML
|
|||
|---|---|---|---|
|
#18+
Млин, чего за зоопарк развели? Если запускать не под Builder'ом, матом благим не ругается, все нормально жуется в catch. ПРи отладке в среде ругаться будет, пока не отключить в Debugger Options "Stop on Delphi Exceptions". Вариации с Abort() не помогут, так как не понятно, чего они лечат: Abort() выбрасывает "молчаливое" EAbort, а нафиг здесь еще одно исключение? ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2006, 10:16 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2031028]: |
0ms |
get settings: |
8ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
150ms |
get topic data: |
9ms |
get first new msg: |
5ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 232ms |
| total: | 486ms |

| 0 / 0 |
