Шаблон try-catch-finally - очень полезный и мощный шаблон, если он используется по назначению.Обработка исключений в блоке finally не рекомендуется , а и не имеет большого (какого-либо?) Смысла.
Попробуйте реорганизовать код так, чтобы он соответствовал шаблону, а не наоборот.
Небольшой пример:
var reader = new StreamReader(path);
try
{
// Do your work here
reader.ReadToEnd();
}
catch (IOException ex)
{
// Handle specific error here
ShowUserError(ex.Message);
}
catch (Exception ex)
{
// Handle general error here
LogError(ex);
}
finally
{
// Perform clean up here
// This code will run regardless if there was an error or not
reader.Close();
}
Кроме того, взгляните на документацию MSDN для Попробуйте ... Catch ... Наконец, заявления .