Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обработка набора собственных ошибок / 4 сообщений из 4, страница 1 из 1
16.06.2006, 14:18
    #33795720
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка набора собственных ошибок
Проблема такая.

Есть класс, в нем обработчик %OnBeforeSave - в котором соответственно в случае чего возращаеться %Status с описанием ошибки.

Если ошибок несколько используется $$$ADDSC(e1,e2). Ошибки формируются как свои собственные так и General Error 5001. Например:

Код: plaintext
1.
2.
3.
4.
5.
6.
New sc
Set sc=$$$OK
Set sc=..CheckRelation()
If $$$ISERR(sc) {
	Set sc=$$$ADDSC($$$ERROR( 10001 ,"Ошибка при сохранении объекта класса T.Z"),sc)
}
quit sc

Далее имеется csp с забинденной формой. При сохранении Cach'e сообщает что форму не удалось сохранить и выводить сообщение об ошибке.
Только вот выводить ровно до того места пока встречаются ЁЁ ошибки. Как только встречается "ERROR #xxxxx: (no error description)" дальнейший текст и дальнейшие ошибки!!! не выводятся.
То есть выдается: ERROR #0: (no error description) 10001
и все

Если же использовать 5001:
Код: plaintext
1.
Set sc=$$$ADDSC($$$ERROR( 5001 ,"Ошибка при сохранении объекта класса T.Z"),sc)
То получаем в форме вполне осмысленно сообщение как о первой так и о второй ошибке.

ERROR #5001: Ошибка при сохранении объекта класса T.Z
ERROR #5001: Тест

В документе "Error processing.doc" - Политика обработки ошибок в Cache-приложениях.
Указан такой абзац

Error processingТакже Вы можете создать свой собственный набор кодов ошибок. Номера пользовательских ошибок должны начинаться с 10000. Для добавления кода ошибки используйте:
AddError^%oueError(errorname,,errorcode,errortext,locale)

В вызове лишняя запятая, ну да ладно. Регистрируем свою ошибку

Код: plaintext
1.
D AddError^%oueError("MyError", 10001 , "Ошибка при сохранении объекта класса %1")
Все успешно создается. В глобал ^%QCacheObjectError что то пишется. НО!

d $system.Status.DisplayError(sc)
Как говорил ERROR #0: (no error description) 10001, так и говорит. Форма соответственно тоже своего поведения не меняет.

Вопрос - как сделать так, что бы Cahc'e обрабатывали МОИ описания ошибок ?
Зачем тогда нужен D AddError^%oueError ?
Или нужно еще какие-то дополнительные манипуляции ?

Понятно что можно пройти, везде указав 5001 код, но тогда придется каждый раз писать текст.
Хотелось бы разобраться и услышать комментарии вендора
...
Рейтинг: 0 / 0
16.06.2006, 14:19
    #33795724
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка набора собственных ошибок
Cache for Windows NT (Intel) 5.0.5 (Build 936) Fri Feb 6 2004 15:36:28 EST
...
Рейтинг: 0 / 0
20.06.2006, 20:25
    #33803928
Ptn
Ptn
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка набора собственных ошибок
И тишина :(

Никто не сталкивался что ли ?
...
Рейтинг: 0 / 0
21.06.2006, 10:54
    #33804639
Maksim UM
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка набора собственных ошибок
У меня тот же результат (версия 5.0.20)...
Можно спросить в саппорте.
На всякий случай хак (думаю из теста понятно как делать):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
#include %occCommon
MA  ; Object error test
  New sc
  Set ^%qCacheMsg("en","%ObjectErrors", 10001 )="Test 10001"
  Set ^%qCacheMsgNames("%ObjectErrors", 10001 )="MyTestError1"
  Set ^%qCacheMsg("en","%ObjectErrors", 10002 )="Test 10002"
  Set ^%qCacheMsgNames("%ObjectErrors", 10002 )="MyTestError2"  
  Set sc=$$$ADDSC($$$ERROR( 10001 ,"Hello"),$$$ERROR( 10002 ,"Hello"))
  Do $system.Status.DisplayError(sc)
  ; End test
  Kill ^%qCacheMsg("en","%ObjectErrors", 10001 ),^%qCacheMsgNames("%ObjectErrors", 10001 )
  Kill ^%qCacheMsg("en","%ObjectErrors", 10002 ),^%qCacheMsgNames("%ObjectErrors", 10002 )
  Quit
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Обработка набора собственных ошибок / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]