Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / трай кеч комит роллбек (Firebird 1) / 11 сообщений из 11, страница 1 из 1
16.11.2003, 18:56
    #32325706
dalai lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
поможите люди добрые незнаю как правильно красиво написать вот это.

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

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

Код: 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
17.11.2003, 11:15
    #32325952
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
а ты делай throw() и лови в другом месте.
...
Рейтинг: 0 / 0
17.11.2003, 11:50
    #32326002
dalai lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
мне же нужно отловить исключение из фаерберда, которое могло выскочить при вызове ХП, и сделать роллбэк. в другом месте (в вызывающем этот метод коде) и объекта Connection-то нету, чтобы роллбэк сделать.
...
Рейтинг: 0 / 0
17.11.2003, 14:20
    #32326242
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
не бейте меня люди, если что не так подсказываю:
catch(Exception e) throws(Exception ee)
{
c.rollback ....etc
...
Рейтинг: 0 / 0
17.11.2003, 14:23
    #32326246
dalai lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
Риман, не знал что так можно... попробую дома... но че-то кажется, что нельзя.... или в распоследних ЖДК можно?
...
Рейтинг: 0 / 0
17.11.2003, 14:43
    #32326291
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
вот я и говорю: "не бейте меня...". Но кажись можно.
...
Рейтинг: 0 / 0
17.11.2003, 14:45
    #32326294
riman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
ЗЫ. Ты всегда Exception, вместо определенного exception, ловишь? Не хорошо это. :)
...
Рейтинг: 0 / 0
17.11.2003, 14:48
    #32326300
dalai lamer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
трай кеч комит роллбек (Firebird 1)
Отыгрался! ;)

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

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

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

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


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