Вложенные обработчики исключений
От: Аноним  
Дата: 22.10.12 08:52
Оценка:
Был сегодня озадачен работой программы.
Структура кода такая:

try
{
   // do something
   // ...
   try
   {
      // do something else
      // здесь происходит исключение
   }
   catch( Exception e)
   {
      // ...
   }
}
catch(...)
{
   // был очень удивлен, что после внутреннего catch мы попадаем еще и сюда
}


Ожидал, что приложение будет себя вести по-другому.
Что нужно сделать, чтобы не попадать после внутреннего обработчика еще и во внешний?
Re: Вложенные обработчики исключений
От: Doc Россия http://andrey.moveax.ru
Дата: 22.10.12 09:13
Оценка:
Здравствуйте, Аноним, Вы писали:

А там не так случаем?

catch( Exception e)
   {
      // ...
      throw;
   }
}
catch(...)
Re[2]: Вложенные обработчики исключений
От: Аноним  
Дата: 22.10.12 09:22
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Здравствуйте, Аноним, Вы писали:


Doc>А там не так случаем?


Doc>
catch( Exception e)
Doc>   {
Doc>      // ...
Doc>      throw;
Doc>   }
Doc>}
Doc>catch(...)


Нет.
Re[3]: Вложенные обработчики исключений
От: Doc Россия http://andrey.moveax.ru
Дата: 22.10.12 09:30
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Нет.


А что именно тогда внутри блока catch( Exception e)
Re[4]: Вложенные обработчики исключений
От: Аноним  
Дата: 22.10.12 10:14
Оценка:
Здравствуйте, Doc, Вы писали:

Doc>Здравствуйте, Аноним, Вы писали:


А>>Нет.


Doc>А что именно тогда внутри блока catch( Exception e)


catch( Exception e )
{
   Response.Write("Во время выполнения задачи произошла ошибка.");
   Response.End();
}


Забыл сказать — внешний catch не имеет аргументов, если это важно.
Re[5]: Вложенные обработчики исключений
От: Аноним  
Дата: 22.10.12 10:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Doc, Вы писали:


Doc>>Здравствуйте, Аноним, Вы писали:


А>>>Нет.


Doc>>А что именно тогда внутри блока catch( Exception e)


А>
А>catch( Exception e )
А>{
А>   Response.Write("Во время выполнения задачи произошла ошибка.");
^^^^^^^^^^^^^^^^^^^^^^^^^ возможно  тут возникает новое исключение.
А>   Response.End();
^^^^^^^^^^^^^^^^^^^^^^^^^ возможно  тут возникает новое исключение.

А>}
А>


А>Забыл сказать — внешний catch не имеет аргументов, если это важно.


добавьте, и сравните эксепшены там и там.
Re[5]: Вложенные обработчики исключений
От: hardcase Пират http://nemerle.org
Дата: 30.10.12 13:53
Оценка: 1 (1)
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Doc, Вы писали:


Doc>>Здравствуйте, Аноним, Вы писали:


А>>>Нет.


Doc>>А что именно тогда внутри блока catch( Exception e)


А>
А>catch( Exception e )
А>{
А>   Response.Write("Во время выполнения задачи произошла ошибка.");
А>   Response.End();
А>}
А>


А>Забыл сказать — внешний catch не имеет аргументов, если это важно.


Внимательно читаем, в документации чем же занимается Response.End — бросает исключение.
/* иЗвиНите зА неРовнЫй поЧерК */
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.