Список вопросов
Как зайти в Даркнет?!
25th January, 01:11
8
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
898
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
951
0
Очень долго работает Update запрос Oracle
27th January, 09:58
916
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
907
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
941
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1726
0
период по дням
25th October, 10:44
3957
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3722
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4614
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4382
0
Помогите пожалуйста решить задачи
24th November, 23:53
6087
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4352
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4398
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
.Net Неверный формат аргумента функции: ArgumentException или FormatException?
Просмотров: 231
 
Ответов: 1
Сначала приведу официальное описание исключений согласно MSDN. Приведу на русском, чтобы всем было понятно:
1. ArgumentException
Это исключение выбрасывается, если один из передаваемых методу аргументов является недопустимым.
2. FormatException
Исключение, выбрасываемое, если формат аргумента не соответствует спецификациям параметра вызываемого метода.
Как видно из официальной документации — оба исключения должны возникать только из-за некорректного значения аргумента, переданного в метод. Т.к. FormatException не наследуется от ArgumentException — многие люди полагают, что в официальной документации ошибка (уже 10 лет никто не удосужился исправить).
Какой же есть четкий критерий когда какое из этих двух исключений выбрасывать? Вот, к примеру,
FileInfo fileInfo = new FileInfo("*"); // ArgumentException
и
Uri uri = new Uri("*"); // UriFormatException
или даже
WebRequest.Create("*"); // UriFormatException
Какие же есть единые стандарты по выбрасыванию ArgumentException|FormatException, чтобы не возникало путаницы?
Спасибо за внимание!
FileInfo fileInfo = new FileInfo("*"); // ArgumentExceptionUri uri = new Uri("*"); // UriFormatExceptionWebRequest.Create("*"); // UriFormatException
На мой взгляд форматные исключения возникают в строках или при явной передаче объекта который может иметь несколько «форматов» представления (хотя в этом случае лучше реализовать конвертер по возможности и не выкидывать эксепшены вообще).
Если мы передали вообще неверные данные — ArgumentException, если передали верные данные, но в неверном формате — FormatException. Только здесь надо определять уже в контексте конкретного приложения, могут ли входные данные быть вообще неверными (имея один формат представления) или все данные верны, но из за разных форматов может возникнуть ошибка. Например при формировании даты из строки для строки типа «dfdfdsfsf» я бы выдавал исключение неверного формата, а для данных «32.09.2010» — ошибку неверного аргумента (генериться оно будет соотв. уже на более низком уровне, при проверке даты).
Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться