Вот мой код:
public void ReadSomeFile(string filePath)
{
    if (!File.Exists(filePath))
        throw new FileNotFoundException();
    var stream = new FileStream(filePath, ....)
    .....
}
Должен ли я сам исключить исключение (см. проверку File.Exists)? FileStream уже будет бросать FileNotFoundException, если файл не существует. Что такое хорошая практика программирования здесь? Анализ кода говорит, что мы должны проверить наши параметры. Но если я передаю этот параметр непосредственно другому методу (мой или чужой код), и этот метод будет генерировать исключение, то в чем преимущество проверки аргумента в моем коде?