Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обработка ошибок в PSQL / 18 сообщений из 18, страница 1 из 1
11.11.2019, 19:36
    #39887713
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
в операторе
Код: sql
1.
 when .... do 


можно как-то получить номер строки процедуры в которой произошла ошибка??
...
Рейтинг: 0 / 0
11.11.2019, 19:45
    #39887721
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m,

ШТО??? а в Дельфи или C++ можно "номер строки" получить?
Код процедуры или триггера (и вообще всего) компилируется в байт-код, называемый BLR. В нём нет строк. Это вам не Basic :-)
...
Рейтинг: 0 / 0
11.11.2019, 19:50
    #39887725
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
NON$CALL_STACK попробуй.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11.11.2019, 20:34
    #39887742
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
kdv
m7m,

ШТО??? а в Дельфи или C++ можно "номер строки" получить?
Код процедуры или триггера (и вообще всего) компилируется в байт-код, называемый BLR. В нём нет строк. Это вам не Basic :-)

В C++ - можно. На этапе компиляции. Макрос assert, например. Ну и если обзаботиться специальной сборкой.
...
Рейтинг: 0 / 0
11.11.2019, 20:47
    #39887744
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
ёёёёё,

ну, это да. но тут - вряд ли. Тем более, речь идет про номер строки при обработке ошибки в этом же коде. Нафига это надо - я не представляю.
В PSQL Firebird ошибки бывают только рантаймовые, синтаксических нет, потому что всё уже скомпилировано. Поэтому область появления ошибок может быть идендифицирована достаточно четко.
Особенно если прочитать
http://www.ibase.ru/savepoints/

Понятно, что в when any do может прилететь что угодно, что происходило до того. Но в любом случае, для обработки ошибок даже в таком месте всё равно надо знать, что может происходить ДО этого самого when any.
А автор вопроса про when any не спрашивал.
...
Рейтинг: 0 / 0
11.11.2019, 20:49
    #39887745
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m,

а зачем именно в операторе ?
Клиенту приходит ошибка и, по возможности полный, стек вызовов (с номерами строк), к ней приведший.
Или нужно именно в PSQL ?
...
Рейтинг: 0 / 0
11.11.2019, 21:42
    #39887752
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
hvlad
m7m,

а зачем именно в операторе ?
Клиенту приходит ошибка и, по возможности полный, стек вызовов (с номерами строк), к ней приведший.
Или нужно именно в PSQL ?


Да именно в PSQL
А вот по поводу зачем
Есть куча лицевых счетов и соответственно процедуры расчета услуг
Расчет проводится для определенной выборки (по некоторым признакам) лицевых счетов
при этом дабы ошибки во время выполнения расчета лицевого счета не "мешали" расчету
остальных они "блокируются" оператором When ... Do с записью некоторой информации
в лог. Поскольку процедуры достаточно громоздкие то номер строки процедуры
облегчил-бы поиск места возникновения, ну и соответственно дальнейшее исправление
...
Рейтинг: 0 / 0
11.11.2019, 22:26
    #39887765
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m,

Для этого люди придумали декомпозицию как краеугольный камень процедурного программирования.
...
Рейтинг: 0 / 0
11.11.2019, 22:33
    #39887767
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m,

допустим, вы это же самое пишете в Дельфи. И там try except end/try finally end.
И нет номеров строк. Ваши действия? Наверное, правильно расположить блоки try except?
Или же вылавливать НОМЕР СТРОКИ процедуры, который будет забиваться вами в код вручную?
Что за безумная идея? Ну добавит кто-нибудь потом еще одну строку, и будет N+1, и ваш when
нихрена не сработает.
Ё-моё, это же программирование, оно не так работает.
...
Рейтинг: 0 / 0
11.11.2019, 23:37
    #39887782
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
Dimitry Sibiryakov
NON$CALL_STACK попробуй.

Спасибо
Попробую
...
Рейтинг: 0 / 0
11.11.2019, 23:47
    #39887785
ёёёёё
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
kdv
m7m,

допустим, вы это же самое пишете в Дельфи. И там try except end/try finally end.
И нет номеров строк. Ваши действия? Наверное, правильно расположить блоки try except?
Или же вылавливать НОМЕР СТРОКИ процедуры, который будет забиваться вами в код вручную?
Что за безумная идея? Ну добавит кто-нибудь потом еще одну строку, и будет N+1, и ваш when
нихрена не сработает.
Ё-моё, это же программирование, оно не так работает.

Ты не поверишь.
Мало того, что с номерами строк, так еще и с автоматическим показом точки бага в исходниках.
И даже смс-ку на мобилу разработчика пришлёт.
И даже не под дебаггером.
...
Рейтинг: 0 / 0
11.11.2019, 23:50
    #39887787
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
Vlad F
m7m,

Для этого люди придумали декомпозицию как краеугольный камень процедурного программирования.

и какое это отношение имеет к заданному вопросу

kdv,
Зачем три раза писать об одном и том-же
я с первого раза понял, что вам это не нравится,
и вы считаете такой подход неправильным


мне нужен просто ответ на мой вопрос
...
Рейтинг: 0 / 0
12.11.2019, 00:11
    #39887796
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m
Dimitry Sibiryakov
NON$CALL_STACK попробуй.

Спасибо
Попробую

Попробовал
Однако в моем случае это не то
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create procedure ....
as
.......
begin
.......
.......
.......
  when any do
  begin
    select ....... from Mon$Call_Stack C
    .......
    .......
  end
end


выдает номер строки в которой этот самый "select ....... from Mon$Call_Stack C" и есть
что при некотором размышлении вполне ожидаемо

а мне нужна именно строка на которой произошла ошибка
...
Рейтинг: 0 / 0
12.11.2019, 01:01
    #39887811
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
А если весь стэк пройти?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
12.11.2019, 08:31
    #39887852
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m
Vlad F
m7m,

Для этого люди придумали декомпозицию как краеугольный камень процедурного программирования.

и какое это отношение имеет к заданному вопросу

Разбей свои "достаточно" громоздкие" на ряд более мелких и локализация ошибок выполнения станет намного проще.
...
Рейтинг: 0 / 0
12.11.2019, 10:38
    #39887905
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
Dimitry Sibiryakov
А если весь стэк пройти?

Да та же самая история
выдает стек вызовов с номерами строк
однако по прежнему для процедуры в которой произошла ошибка
номер строки указывает на строку обработки ошибки
...
Рейтинг: 0 / 0
12.11.2019, 10:41
    #39887908
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
Vlad F
Разбей свои "достаточно" громоздкие" на ряд более мелких и локализация ошибок выполнения станет намного проще.

К моему сожалению:
1. это сейчас не реально
2. не решает поставленную мной передо мной задачу
...
Рейтинг: 0 / 0
12.11.2019, 10:48
    #39887913
Vlad F
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обработка ошибок в PSQL
m7m,

Значит, страдай.
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Обработка ошибок в PSQL / 18 сообщений из 18, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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