Сначала приведу официальное описание исключений согласно MSDN. Приведу на русском, чтобы всем было понятно:
1. ArgumentExceptionЭто исключение выбрасывается, если один из передаваемых методу аргументов является недопустимым.2. FormatExceptionИсключение, выбрасываемое, если формат аргумента не соответствует спецификациям параметра вызываемого метода.
Как видно из официальной документации — оба исключения должны возникать только из-за некорректного значения аргумента, переданного в метод. Т.к. FormatException не наследуется от ArgumentException — многие люди полагают, что в официальной документации ошибка (уже 10 лет никто не удосужился исправить).
Какой же есть четкий критерий когда какое из этих двух исключений выбрасывать? Вот, к примеру,
FileInfo fileInfo = new FileInfo("*"); // ArgumentException
и
Uri uri = new Uri("*"); // UriFormatException
или даже
WebRequest.Create("*"); // UriFormatException
Какие же есть единые стандарты по выбрасыванию ArgumentException|FormatException, чтобы не возникало путаницы?
Спасибо за внимание!