Действительно ли File.WriteAllText создает исключение FileNotFoundException? - PullRequest
1 голос
/ 18 февраля 2012

Документация гласит:

// Summary:
//     Creates a new file, writes the specified string to the file, and then closes
//     the file. If the target file already exists, it is overwritten.

Первая строка, первое предложение: Creates a new file и перечисленные исключения:

//   System.IO.FileNotFoundException:
//     The file specified in path was not found.

В каком случае это произойдет? Если он всегда создает файл, он не должен выдавать исключение FileNotFoundException ...

Документация неверна? Или, возможно, отсутствует тег <remarks>?

1 Ответ

5 голосов
/ 18 февраля 2012

File.WriteAllText в конце концов вызывает:

private static void InternalWriteAllText(string path, string contents, Encoding encoding)
{
    using (StreamWriter streamWriter = new StreamWriter(path, false, encoding))
    {
        streamWriter.Write(contents);
    }
}

Все исключения, выданные до вызова InternalWriteAllText throw ArgumentException или ArgumentNullException, но теоретически (поскольку FileStream может выдать исключение) streamWriter.Write(contents); потенциально может вызвать исключение.Очень маловероятно, хотя, основываясь на том, что он делает и как открывается streamWriter.

Я бы не сказал, что документ неправильный сам по себе, тем более что MS покрывает свою задницудокументирование (очень редкой) возможности.

Источник: декомпиляция mscorlib v4.0.0.0 с использованием ILSpy.

ОБНОВЛЕНИЕ

Только что отмечено mscorlib v2.0.0.0, тот же случай, за исключением того, что он содержит меньше проверок работоспособности (это означает, что он в основном переводит непосредственно в код выше).

...