Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Взгляните на код обработки исключений / 7 сообщений из 7, страница 1 из 1
06.11.2018, 15:53
    #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
06.11.2018, 15:58
    #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
06.11.2018, 16:29
    #39728662
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взгляните на код обработки исключений
Вячеслав Любомудров,

Спасибо.

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

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

даром что ли слушаю https://soundcloud.com/podlodka] подкаст podlodka
...
Рейтинг: 0 / 0
06.11.2018, 18:26
    #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
07.11.2018, 09:25
    #39729021
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Взгляните на код обработки исключений
Кроик Семёндаром что ли слушаю https://soundcloud.com/podlodka] подкаст podlodka Даром.
Код научится писать нужно было хотя бы лет 10 назад.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Взгляните на код обработки исключений / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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