... но возможно ли получить более подробные сообщения об ошибках.
Да. Идите вперед и поймайте IOException
и используйте метод Exception.ToString()
, чтобы отобразить относительно релевантное сообщение об ошибке. Обратите внимание, что исключения, сгенерированные .NET Framework, будут содержать эти полезные строки, но если вы собираетесь выдать свое собственное исключение, вы должны не забыть вставить эту строку в конструктор Exception
, например:
throw new FileNotFoundException("File not found");
Кроме того, согласно Скотту Дорману , используйте это утверждение using
. Однако следует отметить, что утверждение using
на самом деле ничего не catch
, как это и должно быть. Например, ваш тест, чтобы увидеть, существует ли файл, представит условие гонки, которое может быть скорее досадным . Это на самом деле не приносит никакой пользы. Итак, теперь для читателя имеем:
try {
using (StreamReader reader = file.OpenText()) {
// Your processing code here
}
} catch (IOException e) {
UI.AlertUserSomehow(e.ToString());
}
Короче говоря, для основных файловых операций:
1. Используйте using
2. Оберните оператор использования или функцию в try
/ catch
, catch
es IOException
3. Используйте Exception.ToString()
в вашем catch
, чтобы получить полезное сообщение об ошибке
4. Не пытайтесь самостоятельно обнаруживать исключительные проблемы с файлами. Пусть .NET сделает бросок за вас.