The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"try/finally in gcc"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"try/finally in gcc"
Сообщение от romio emailИскать по авторуВ закладки on 24-Авг-02, 21:15  (MSK)
что можно поюзать вместо субжа?
всё бы ничего, но из блока try {} бывают return'ы и надо как-то обеспечить finally.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: try/finally in gcc"
Сообщение от sas emailИскать по авторуВ закладки on 24-Авг-02, 22:16  (MSK)
>что можно поюзать вместо субжа?
>всё бы ничего, но из блока try {} бывают return'ы и надо
>как-то обеспечить finally.

Hi,

This is C++ not java, so

public:
void m1()
{
try {
// no returns and gotos from try block
if ( i_want_to_call_return ) {
finally();
return;
}
}
catch ( ... ) { // will catch any exception
}
finally();
}

private:
void finally()
{
// your finally stuff
}

Thanks
--- Sas

:)


  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: try/finally in gcc"
Сообщение от LS Искать по авторуВ закладки on 25-Авг-02, 23:30  (MSK)
>>что можно поюзать вместо субжа?
>>всё бы ничего, но из блока try {} бывают return'ы и надо
>>как-то обеспечить finally.
>
>Hi,
>
>This is C++ not java, so
>
>public:
>void m1()
>{
> try {
>  // no returns and gotos from try block
>  if ( i_want_to_call_return ) {
>   finally();
>   return;
>  }
> }
> catch ( ... ) { // will catch any exception
> }
> finally();
>}
>
>private:
>void finally()
>{
> // your finally stuff
>}
>
>Thanks
>--- Sas
>
>:)


Или как вариант:

void xxx()
{
try
{
  try
  {
    bla;
    bla;
    bla;
   // вместо return генерируем искючение
   excetp ...
  }
  catch
  {
   //обрабатываем ошибки внутри функции (все, кроме ...)
  }
}
catch ...
{
  // обрабатываем except ... = finally
}
}

PS С основательно подзабыл, но думаю идея понятна.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: try/finally in gcc"
Сообщение от sas emailИскать по авторуВ закладки on 25-Авг-02, 23:43  (MSK)
Hi LS,

Your solution is really better!

Thanks
--- Sas

  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: try/finally in gcc"
Сообщение от sas emailИскать по авторуВ закладки on 25-Авг-02, 23:54  (MSK)
Hi,

LS's variant with try { try {} } is better.

Alos some corrections to code I have posted previously.

public:
void m1()
{
try {
// no returns and gotos from try block
if ( i_want_to_call_return ) {
finally();
return;
}
}
catch ( const some_exception& e ) {
        finally(); // put finally if you need transparent exceptions
        throw;
}
catch ( const some_other_exception& oe ) {
        // no finally if we are not rethrow
}
catch ( ... ) { // will catch any exception
finally();
throw;
}
finally();
}


private:
void finally()
{
// your finally stuff
}

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: try/finally in gcc"
Сообщение от genie Искать по авторуВ закладки on 26-Авг-02, 03:10  (MSK)
>что можно поюзать вместо субжа?
>всё бы ничего, но из блока try {} бывают return'ы и надо
>как-то обеспечить finally.

A mozhet prosche ispol'zovat' destructory ob'ektov? Primerno tak:

class TEMP
{
  public:
     ~TEMP()
     {
        //Do smth here
     }
};


void function()
{
    TEMP t;

    //bla-bla-bla
}

Kogda function vozvraschaetsya, budet vyzvan destructor.


  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру