powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / трай кеч комит роллбек (Firebird 1)
11 сообщений из 11, страница 1 из 1
трай кеч комит роллбек (Firebird 1)
    #32325706
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поможите люди добрые незнаю как правильно красиво написать вот это.

нужно выполнить процедуру на интербейсе, а если выскочит эксепшон, сделать роллбэк, а иначе коммит. не пойму как без вложенного трай-кетча обойтись - может файналли поможет? не знаю куда его приткнуть.

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

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
    try
    {
      CallableStatement s = c.prepareCall( "{call create(null,?,?,?,?)}" );
      //CallableStatement s = c.prepareCall( "{? = call create(null,?,?,?,?)}" );
      s.setString( 1 ,  "ssss" );
      s.setShort( 2 , (short) 1 );
      s.setShort( 3 , (short) 1 );
      s.setLong( 4 ,  19 );

      s.execute();

      idmet = s.getLong( 1 );
      s.close();
      c.commit();
      c.close();
    }
    catch (Exception e)
    {
      try
      {
        c.rollback();
        c.close();
      }
      catch (Exception ee)
      {
        ee.printStackTrace();
        return null;
      }
      e.printStackTrace();
      return null;
    }
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32325952
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты делай throw() и лови в другом месте.
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326002
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
мне же нужно отловить исключение из фаерберда, которое могло выскочить при вызове ХП, и сделать роллбэк. в другом месте (в вызывающем этот метод коде) и объекта Connection-то нету, чтобы роллбэк сделать.
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326242
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не бейте меня люди, если что не так подсказываю:
catch(Exception e) throws(Exception ee)
{
c.rollback ....etc
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326246
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Риман, не знал что так можно... попробую дома... но че-то кажется, что нельзя.... или в распоследних ЖДК можно?
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326291
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот я и говорю: "не бейте меня...". Но кажись можно.
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326294
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЗЫ. Ты всегда Exception, вместо определенного exception, ловишь? Не хорошо это. :)
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32326300
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отыгрался! ;)

Ну я ж ламер, мне не стыдно, а ты Риман, открыл Риманово пространство! ;)
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32332982
Фотография dalai lamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну Риман, прости!

Ну я буду делать catch SQLException!

Только подскажи, как правильно написать!

...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32333572
прогер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть исчо
finally
{
}
...
Рейтинг: 0 / 0
трай кеч комит роллбек (Firebird 1)
    #32335327
Фотография riman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, Ламер, не пойму чего тебе надобно - то? Оформляешь свой коннект - роллбек в функцию или ещё чего - как тебе угодно. В catch() делаешь throw(), шоб потом при вызове функции ловить эксепшн - только это выглядит также как и вложенный try() - только покрасивее. Да и чем тебе вложенный try()-то не нравится?
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / трай кеч комит роллбек (Firebird 1)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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