Я работаю с потоком файлов в C #. Это кэш-память, поэтому, если что-то идет плохо при записи файла (поврежденные данные, ...), мне нужно удалить файл и повторно вызвать исключение , чтобы сообщить о проблеме. Я думаю о том, как реализовать это наилучшим образом. Моя первая попытка была:
Stream fileStream = null;
try
{
fileStream = new FileStream(GetStorageFile(),
FileMode.Create, FileAccess.Write, FileShare.Write);
//write the file ...
}
catch (Exception ex)
{
//Close the stream first
if (fileStream != null)
{
fileStream.Close();
}
//Delete the file
File.Delete(GetStorageFile());
//Re-throw exception
throw;
}
finally
{
//Close stream for the normal case
if (fileStream != null)
{
fileStream.Close();
}
}
Как вы увидите, если при записи файла что-то пойдет не так, fileStream будет закрыт дважды. Я знаю, что это работает, но я не думаю, что это лучшая реализация.
Я думаю, что мог бы удалить блок finally
и закрыть поток в блоке try
, но я разместил это здесь, потому что вы, ребята, эксперты, и я хочу услышать голос эксперта.
Спасибо заранее.