Ось мій код:
public void ReadSomeFile(string filePath)
{
if (!File.Exists(filePath))
throw new FileNotFoundException();
var stream = new FileStream(filePath, ....)
.....
}
Чи повинен я сам робити виключення (див. File.ExistsПеревірку)? FileStreamвже викине, FileNotFoundExceptionякщо файл не існує. Яка тут хороша практика програмування? Аналіз коду говорить, що нам слід перевірити наші параметри. Але якщо я передаю цей параметр безпосередньо іншому методу (мій чи інший код), і цей метод викине сам виняток, то яка перевага перевірки аргументу в моєму коді?
FileNotFoundException- насправді, це просто запрошення до питань стану перегонів. Або ви обробляєте виняток, дозволяєте йому поширюватися, або обертаєте його у власному винятку. Це відповідає "я знаю, що з цим робити", "я не знаю, що з цим робити" і "я хочу обробити це вище в стеці" відповідно.