powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
15 сообщений из 15, страница 1 из 1
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630618
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

В узких кругах широко известно, что для перехвата user-defined исключения можно юзать конструкцию вида when exception my_exception do, например так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
recreate exception ex_fail_01 'failed value: @1, severity: @1';
recreate exception ex_fail_02 'failed value: @1, severity: @1';
recreate exception ex_fail_03 'failed value: @1, severity: @1';
recreate table fails_log(dts timestamp default 'now', fail_name varchar(31));
commit;

execute block as
declare n int;
begin
  n = rand()*10;
  if (n < 3 ) then exception ex_fail_01 using (n, 1);
  else if (n < 7) then exception ex_fail_02 using (n, 2);
  else exception ex_fail_03 using (n, 3);
when exception ex_fail_01 do
  in autonomous transaction do insert into fails_log(fail_name) values('ex_fail_01');
when exception ex_fail_02 do
  in autonomous transaction do insert into fails_log(fail_name) values('ex_fail_02');
when exception ex_fail_03 do
  in autonomous transaction do insert into fails_log(fail_name) values('ex_fail_03');
end



Очевидный трабл тут в том, что при записи в лог имя исключения ('ex_fail_NN') надо прописывать явно.
Глядел в доку, но так и не понял: существует ли возможность обратиться к имени исключения, не упоминая само имя ? :-)
Ну, то есть что-то типа такого:
Код: sql
1.
2.
when exception ex_fail_01 do
  in autonomous transaction do insert into fails_log(fail_name) values( current_exception );

- ?

PS. А также интересно бы получить текст, который сейчас сидит в исключении и дальше полетит клиенту (то, что уточняется кляузой using)
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630633
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Нет, не существует.
2. Cтрашный баян.
3. IIRC, ты об этом уже спрашивал.
4. Это даже в трекере есть, кажись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630635
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам> 4. Это даже в трекере есть, кажись.

Хотя поиском я что-то с ходу не нашёл.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630640
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам3. IIRC, ты об этом уже спрашивал.Не помню что-то... Да и заинтересовало совсем недавно.
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630646
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может и не ты, но вроде недавно обсуждалось.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630648
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В трекер надо занести, кстати.
Подождём ДЕ/Влада - чтобы они
подтвердили, что такого тикета нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630665
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидВ узких кругах широко известно, что для перехвата user-defined исключения можно юзать конструкцию вида when exception my_exception do
чего это круги узкие? Или ты про USING в FB3?

по поводу сабжа, ИХМО нужна контекстная переменная
А ещё нужна возможность вытаскивать тексты ошибок, а не только имя (и не только из exception) в PSQL. Вот это точно недавно обсуждалось
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630677
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамВ трекер надо занести, кстати.
Подождём ДЕ/Влада - чтобы они
подтвердили, что такого тикета нет.
только мы в трекере искать умеем, что-ли? 2040, 1132, может еще и 2382.
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630680
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисчего это круги узкие? Или ты про USING в FB3?Это я так, на автопилоте накалякал :-)
Симонов Дениспо поводу сабжа, ИХМО нужна контекстная переменная
А ещё нужна возможность вытаскивать тексты ошибок, а не только имя (и не только из exception) в PSQL.Да, нарыл - сам же и спрашивал (правда, только про стандартные исключения)
А еще нарыл странность с when-блоками (я про то, что в тамошнем примере управление вроде бы попадает *И* в "when gdscode concurrent_transaction, gdscode deadlock do" *И* также в "when any"). Но, видимо, я тогда всем надоел и вопрос утонул.
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630683
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrтолько мы в трекере искать умеем, что-ли? 2040, 1132, может еще и 2382.
ну поиск там оставляет желать лучшего...
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630688
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА еще нарыл странность с when-блоками (я про то, что в тамошнем примере управление вроде бы попадает *И* в "when gdscode concurrent_transaction, gdscode deadlock do" *И* также в "when any"). Но, видимо, я тогда всем надоел и вопрос утонул.
и это тоже есть в трекере...
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630700
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> только мы в трекере искать умеем, что-ли? 2040, 1132, может еще и 2382.

Нет, конечно, но я 2 раза попробовал - с ходу результата не получил.
Понятное дело, что плохо искал, но ты это не мне выговаривай, а ТСу. :)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630702
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> Да, нарыл

Лучше бы ты в трекере рыл. :)
Иди, провотируй все 3 тикета.

Таблоид> сам же и спрашивал

Склероз - штука хорошая.
Особенно, когда его нет.

Таблоид> (правда, только про стандартные исключения)

Нет разницы стандартные или пользовательские.
Статус-вектор - он и в Африке статус-вектор.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630706
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустампровотируй все 3 тикетаDone.
...
Рейтинг: 0 / 0
Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
    #38630711
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

0xFF. Чек мыльце, плз. Вопросик там у мну, обсудить надо бы.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Зарегистрировать ИМЯ возникшего исключения без явного написания этого имени. Как ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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