На самом деле, я попытался защитить свой код от ошибок и в итоге он выглядел довольно грязно.
У меня есть функция, настроенная для чтения файлов определенного типа.Я хочу, чтобы функция возвращала false, если возникла проблема, или true, если все работало.У меня проблемы с выяснением, как все структурировать.
У меня есть начальный блок try-catch, который пытается открыть поток файлов.После этого у меня есть некоторые другие проверки, которые я делаю в процессе чтения, такие как размер файла и значения при определенных смещениях.Я настроил это с помощью операторов if else.Например:
if(condition){
}
else{
MessageBox.Show("There was an error");
br.Dispose();
fs.Dispose();
return false;
}
... br - двоичный читатель и fs файловый поток.Подобных блоков много, и кажется плохой практикой писать одно и то же много раз.Первое, что приходит на ум, - это обернуть все это в оператор try-catch и генерировать исключения вместо использования блоков if else.Я помню, когда читал об операторах try-catch, что хорошо иметь их, но не оборачивать ими все.Честно говоря, я до сих пор не до конца понимаю, почему было бы плохой практикой оборачивать все в операторы try catch, поскольку они дают эффект только при наличии ошибки, и в этом случае программа все равно идет на юг ...
Кроме того, мне нужно закрыть двоичный считыватель и поток файлов или закроет один из них, закрыв другой?Есть ли способ использовать их, не избавляясь от них?