powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Взгляните на код обработки исключений
7 сообщений из 7, страница 1 из 1
Взгляните на код обработки исключений
    #39728636
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Бросьте пожалуйста взгляд на код, необходимо по-разному обработать исключения заблокированного ресурса и и его отсутствия.

Решил вложенными begin exception end - блоками. Нормальное ведь решение?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DECLARE
   E_LOCKED       exception;
   PRAGMA EXCEPTION_INIT(E_LOCKED, -00054); -- "ORA-00054 resource busy and acquire with NOWAIT specified"

BEGIN
   begin
      begin
         SELECT ... INTO ... FROM ... 
         WHERE ... 
         FOR UPDATE NOWAIT;
      exception
         when NO_DATA_FOUND then ...  -- исключение если строка таблицы не найдена
      end;
   
      ...
      ...
      ... 

   exception   
      when E_LOCKED then ...   -- исключение если строка таблицы заблокирована
   end;
END; 
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39728641
Вячеслав Любомудров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем вложенными-то?
Не, ну только если по логике
но чисто технически никто не запрещает
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
begin
         SELECT ... INTO ... FROM ... 
         WHERE ... 
         FOR UPDATE NOWAIT;
      exception
         when NO_DATA_FOUND then ...  -- исключение если строка таблицы не найдена
         when E_LOCKED then ...   -- исключение если строка таблицы заблокирована
   end;
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39728662
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вячеслав Любомудров,

Спасибо.

Да, из-за логики. т.к. "отсутствие" - это нормально (будет вставлено далее по коду), а "заблокировано" - ахтунг, надо пропустить
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39728701
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семённадо пропуститьДаже, если не смог организовать блоки кода для применимости return, exit, continue, исключения нагляднее оформлять синтаксически непосредственно за исключительным кодом. В конце-концов можно использовать if после исключительного блока.
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39728766
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,

признаю, код понятнее будет
решил переделать

даром что ли слушаю https://soundcloud.com/podlodka] подкаст podlodka
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39728770
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
DECLARE
   bIsLocked      boolean;

   E_LOCKED       exception;
   PRAGMA EXCEPTION_INIT(E_LOCKED, -00054);    -- "ORA-00054 resource busy and acquire with NOWAIT specified"
BEGIN
   bIsLocked := false;
   begin
      SELECT ... INTO ... FROM ... 
      WHERE ... 
      FOR UPDATE NOWAIT;
   exception
      when NO_DATA_FOUND then ...           -- исключение если строка таблицы не найдена
      when E_LOCKED then bIsLocked := true; -- исключение если строка таблицы заблокирована
   end;
   
   
   if not bIsLocked then
      ...
      ...
      ... 
   end if;
END;
...
Рейтинг: 0 / 0
Взгляните на код обработки исключений
    #39729021
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семёндаром что ли слушаю https://soundcloud.com/podlodka] подкаст podlodka Даром.
Код научится писать нужно было хотя бы лет 10 назад.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Взгляните на код обработки исключений
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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