Был сегодня озадачен работой программы.
Структура кода такая:
try
{
// do something
// ...
try
{
// do something else
// здесь происходит исключение
}
catch( Exception e)
{
// ...
}
}
catch(...)
{
// был очень удивлен, что после внутреннего catch мы попадаем еще и сюда
}
Ожидал, что приложение будет себя вести по-другому.
Что нужно сделать, чтобы не попадать после внутреннего обработчика еще и во внешний?
Здравствуйте, Аноним, Вы писали:
А там не так случаем?
catch( Exception e)
{
// ...
throw;
}
}
catch(...)
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, Аноним, Вы писали:
Doc>А там не так случаем?
Doc>catch( Exception e)
Doc> {
Doc> // ...
Doc> throw;
Doc> }
Doc>}
Doc>catch(...)
Нет.
Здравствуйте, Doc, Вы писали:
Doc>Здравствуйте, Аноним, Вы писали:
А>>Нет.
Doc>А что именно тогда внутри блока catch( Exception e)
catch( Exception e )
{
Response.Write("Во время выполнения задачи произошла ошибка.");
Response.End();
}
Забыл сказать — внешний catch не имеет аргументов, если это важно.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Doc, Вы писали:
Doc>>Здравствуйте, Аноним, Вы писали:
А>>>Нет.
Doc>>А что именно тогда внутри блока catch( Exception e)
А>А>catch( Exception e )
А>{
А> Response.Write("Во время выполнения задачи произошла ошибка.");
^^^^^^^^^^^^^^^^^^^^^^^^^ возможно тут возникает новое исключение.
А> Response.End();
^^^^^^^^^^^^^^^^^^^^^^^^^ возможно тут возникает новое исключение.
А>}
А>
А>Забыл сказать — внешний catch не имеет аргументов, если это важно.
добавьте, и сравните эксепшены там и там.
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Doc, Вы писали:
Doc>>Здравствуйте, Аноним, Вы писали:
А>>>Нет.
Doc>>А что именно тогда внутри блока catch( Exception e)
А>А>catch( Exception e )
А>{
А> Response.Write("Во время выполнения задачи произошла ошибка.");
А> Response.End();
А>}
А>
А>Забыл сказать — внешний catch не имеет аргументов, если это важно.
Внимательно читаем, в документации чем же занимается
Response.End — бросает исключение.