Что-то почти всегда минусов от исключений больше чем плюсов ...
например такой пример:
class Program
{
static void Fx()
{
FileStream f = new FileStream("D:\\1.txt",FileMode.Append);
f.Write(UnicodeEncoding.UTF8.GetBytes("zzz"));
throw new Exception("test");//предположим вызвалось в процессе работы исключение!!!
f.Close();
}
static void Main(string[] args)
{
try {
Fx();
}
catch (Exception e)
{
Console.WriteLine("zzz");
}
Console.WriteLine("Hello World!");
}
}
во время выполнения Console.WriteLine("zzz"); Файл "D:\\1.txt" остаётся открытым и не записывается
А если подобное исключение вызывает нехорошее состояние обекта — то даже правильный GC не поможет!!!
Править такое ГГ надоедает...
Правлю я в стиле:
finally
{
if(f!=null){...}
if(...){...}
//задолбало полотно!!!
}
Можно вобще не обрабатывать — закроется с ошибкой (типо почти нормально?) — но какой тогда смысл в их использовании???
Может подскажите как меньшими силами обходит похожие грабли ???