|
|
|
Вытянуть сообщение об ошибке
|
|||
|---|---|---|---|
|
#18+
Подсознательно понимаю, что этот вопрос должен быть не здесь, но все-таки... Клиентская часть ПО пишется на С++, сервер - Sybase ASE 12.5... Необходимо логировать все обращения к серваку со стороны клиента. В том числе и "завалы" (ошибки). На клиенте реализую обработку проблемных моментов через Try {} catch(...) {} Внимание вопрос: завалилась секция Try ушла в catch... КАК поймать дескрипшен ошибки, которую пригнал сервак? Т.е. в идеале хотелось бы в лог-файл писать полное сообщение от сервака (типа так же, как оно пишется при запуске запроса из Advantage и т.п.) Т.е. по типу "Procedure 'Post_Planar_Proc', Line 5: Arithmetic overflow during implicit conversion of NUMERIC value '-1' to a TINYINT field . "... Подскажите, как это реализовать с минимальными потерями. Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 08:57 |
|
||
|
Вытянуть сообщение об ошибке
|
|||
|---|---|---|---|
|
#18+
Через что коннект к ASE идет? Через OpenClient / OLEDB / ODBC / BDE Если же через OpenClient, то все сообщения об ошибках, осуществляються через callback функцию, которая определяется в момент инициализации контекста коннекта. (сt_init) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 11:26 |
|
||
|
Вытянуть сообщение об ошибке
|
|||
|---|---|---|---|
|
#18+
Коннект делается через ADO... Попытка добраться через коллекцию ошибок для ADOConnection WideString Descr; DM->DBp->Errors->Item[0]->Get_Description(Descr); заваливается на стадии компиляции с ошибкой: [Linker Error] Unresolved external 'System::__linkproc__ __fastcall CheckAutoResult()' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|syssupp Хотя все линки настроенны корректно... Как еще можно докопаться до сообщения об ошибке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 12:35 |
|
||
|
Вытянуть сообщение об ошибке
|
|||
|---|---|---|---|
|
#18+
moris пишет: > Если же через OpenClient, то все сообщения об ошибках, осуществляються > через callback функцию, которая определяется в момент инициализации > контекста коннекта. (сt_init) Вовсе не обязательно, это - лишь один из двух возможных вариантов, есть еще и другой (ct_diag). Но что OpenClient не будет бросать C++-ные исключения - это точно. Потому что это - C-шная библиотека. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 13:13 |
|
||
|
Вытянуть сообщение об ошибке
|
|||
|---|---|---|---|
|
#18+
morisЧитаем доку, она иногда бывает полезна. Она то может и полезна, но предназначена для АСЕ 15.0... А у меня 12.5 Вообще докопал через свой вариант. DM->DBp->Errors->Item[0]->Get_Description(Descr); То, что С++ отваливался при компиляции оказалось багом самого билдера... Лечится следующей прагмой: #pragma alias "@System@@CheckAutoResult$qqrv"="@System@@CheckAutoResult$qqrl" И после этого все работает как часы. Можно получить доступ ко всем ошибкам (как к кодам, так и к описаниям), который только были у connection за время выполнения проги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2008, 15:58 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=52&tid=2011622]: |
0ms |
get settings: |
5ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
22ms |
get tp. blocked users: |
1ms |
| others: | 200ms |
| total: | 276ms |

| 0 / 0 |
