System exception system formatexception

Format Exception Класс

Определение

Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.

Исключение, которое возникает в случае, если формат аргумента недопустим или строка составного формата построена неправильно.

Комментарии

Исключение FormatException может возникать по одной из следующих причин:

В вызове метода, который преобразует строку в другой тип данных, строка не соответствует требуемому шаблону. Обычно это происходит при вызове некоторых Convert методов класса и Parse ParseExact методов некоторых типов.

В большинстве случаев, особенно если преобразуемая строка является входной пользователем или считывается из файла, следует использовать try/catch блок ( try/with в F#) и обработать FormatException исключение, если преобразование завершается неудачно. Можно также заменить вызов метода преобразования вызовом TryParse или TryParseExact методом, если он существует. FormatException Однако при попытке проанализировать предопределенную или жестко заданную строку возникает исключение, указывающее на ошибку программы. В этом случае следует исправить ошибку, а не обработать исключение.

Преобразование строки в следующие типы в System пространстве имен может вызвать FormatException исключение:

Boolean. Для Boolean.Parse(String) преобразования строки и Convert.ToBoolean(String) методов требуется значение «True», «true», «False» или «false». Любое другое значение вызывает FormatException исключение.

DateTime и DateTimeOffset. Все данные даты и времени интерпретируются на основе соглашений о форматировании определенного языка и региональных параметров: текущего языка и региональных параметров (или, в некоторых случаях, текущего языка и региональных параметров приложения), инвариантного языка и региональных параметров или указанного языка и региональных параметров. При вызове DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) методов DateTimeOffset.ParseExact(String, String[], IFormatProvider, DateTimeStyles) данные даты и времени должны точно соответствовать шаблону, заданному одной или несколькими строками стандартного формата или строками настраиваемого формата , которые предоставляются в качестве аргументов в вызове метода. Если он не соответствует ожидаемому шаблону языка и региональных параметров, FormatException создается исключение. Это означает, что данные даты и времени, сохраненные в формате языка и региональных параметров в одной системе, не могут успешно анализироваться в другой системе.

Дополнительные сведения об анализе дат и времени см. в разделе «Анализ строк даты и времени » и в документации по методу, вызвавшего исключение.

Читайте также:  Yii error stack trace

Идентификаторы GUID. Строковое представление GUID должно состоять из 32 шестнадцатеричных цифр (0–F) и должно находиться в одном из пяти форматов, выводимых методом Guid.ToString . Дополнительные сведения см. в описании метода Guid.Parse.

Числовые типы, включая все целые числа со знаком, целые числа без знака и типы с плавающей запятой. Анализируемая строка должна состоять из латинских цифр 0–9. Кроме того, можно разрешить положительный или отрицательный знак, десятичный разделитель, разделитель групп и символ валюты. При попытке проанализировать строку, содержащую любой другой символ, всегда возникает FormatException исключение.

Все числовые строки интерпретируются на основе соглашений о форматировании определенного языка и региональных параметров: текущего языка и региональных параметров, инвариантного языка и региональных параметров или указанного языка и региональных параметров. В результате при использовании соглашений другого может произойти сбой числовой строки, анализируемой с помощью соглашений одного языка и региональных параметров.

Дополнительные сведения об анализе числовых строк см. в разделе «Анализ числовых строк » и в документации по конкретному методу, вызвавшего исключение.

Интервалы времени. Анализируемая строка должна быть в фиксированном формате без учета языка и региональных параметров или в формате с учетом языка и региональных параметров, определяемом текущим языком и региональными параметрами, инвариантным языком и региональными параметрами или указанным языком и региональными параметрами. Если строка не имеет соответствующего формата или если, как минимум, дни, часы и минуты, компоненты интервала времени отсутствуют, метод синтаксического анализа создает FormatException исключение. Дополнительные сведения см. в документации по методу TimeSpan синтаксического анализа, вызвавшего исключение.

Тип реализует IFormattable интерфейс, который поддерживает строки форматирования, определяющие способ преобразования объекта в строковое представление, и используется недопустимая строка формата. Чаще всего это происходит в операции форматирования. В следующем примере строка стандартного формата Q используется в строке составного формата для форматирования числа. Однако «Q» не является допустимой строкой стандартного формата.

Это исключение возникает из-за ошибки кодирования. Чтобы исправить ошибку, удалите строку формата или замените ее допустимой. В следующем примере исправлена ошибка, заменив недопустимую строку формата строкой формата «C» (currency).

FormatException Исключение также можно создать с помощью методов синтаксического анализа, таких как DateTime.ParseExact и Guid.ParseExact, которые требуют, чтобы строка была проанализирована точно в соответствии с шаблоном, заданным строкой формата. В следующем примере строковое представление GUID должно соответствовать шаблону, заданному строкой стандартного формата G. Guid Однако реализация IFormattable структуры не поддерживает строку формата G.

Читайте также:  Как сделать полный backup прошивки

Это исключение также возникает из-за ошибки кодирования. Чтобы исправить его, вызовите метод синтаксического анализа, который не требует точного формата, например DateTime.Parse , или Guid.Parseзамените допустимую строку формата. В следующем примере исправлена ошибка путем вызова Guid.Parse метода.

Один или несколько индексов элементов формата в строке составного формата больше индексов элементов в списке объектов или массиве параметров. В следующем примере самый большой индекс элемента формата в строке формата равен 3. Так как индексы элементов в списке объектов основаны на нулях, эта строка форматирования потребует от списка объектов четыре элемента. Вместо этого он содержит только три, dat«temp и scale , таким образом, код приводит к FormatException исключению во время выполнения:.

В этом случае FormatException исключение является результатом ошибки разработчика. Его следует исправлять, а не обрабатывать в try/catch блоке, убедившись, что каждый элемент в списке объектов соответствует индексу элемента формата. Чтобы исправить этот пример, измените индекс второго элемента формата, чтобы он ссылается на dat переменную, и уменьшайте индекс каждого последующего элемента формата на один.

Строка составного формата неправильно сформирована. В этом случае FormatException исключение всегда является результатом ошибки разработчика. Его следует исправлять, а не обрабатывать в блоке try/catch .

Попытка включить литеральные скобки в строку, как показано в следующем примере, вызовет исключение.

Рекомендуемая методика включения литеральных фигурных скобок в строку составного формата заключается в том, чтобы включить их в список объектов и использовать элементы форматирования для их вставки в результирующую строку. Например, можно изменить предыдущую строку составного формата, как показано здесь.

Исключение также возникает, если строка формата содержит опечатку. Следующий вызов String.Format метода пропускает закрывающую скобку и связывает открывающую скобку с закрывающей скобкой.

Чтобы исправить ошибку, убедитесь, что все открывающие и закрывающие фигурные скобки соответствуют.

Список объектов предоставлен в составном методе форматирования в виде массива строго типизированных параметров, а FormatException исключение указывает, что индекс одного или нескольких элементов форматирования превышает число аргументов в списке объектов. Это происходит из-за отсутствия явного преобразования между типами массивов, поэтому вместо этого компилятор обрабатывает массив как один аргумент, а не как массив параметров. Например, следующий вызов Console.WriteLine(String, Object[]) метода вызывает FormatException исключение, хотя самый высокий индекс элементов формата равен 3, а массив параметров типа Int32 имеет четыре элемента.

Читайте также:  Prestigio geovision 5060 прошивка

Вместо обработки этого исключения следует исключить ее причину. Поскольку ни Visual Basic, ни C# не могут преобразовать целочисленный массив в массив объектов, перед вызовом метода составного форматирования необходимо выполнить преобразование самостоятельно. В следующем примере показано, как это делается.

FormatException использует COR_E_FORMAT HRESULT, имеющий значение 0x80131537.

Класс FormatException является производным от Exception и не добавляет уникальных членов. Список начальных значений свойств для экземпляра FormatException, см. в разделе FormatException конструкторы.

Конструкторы

Инициализирует новый экземпляр класса FormatException.

Инициализирует новый экземпляр класса FormatException с сериализованными данными.

Инициализирует новый экземпляр класса FormatException с указанным сообщением об ошибке.

Инициализирует новый экземпляр класса FormatException указанным сообщением об ошибке и ссылкой на внутреннее исключение, вызвавшее данное исключение.

Свойства

Возвращает коллекцию пар «ключ-значение», предоставляющую дополнительные сведения об исключении.

(Унаследовано от Exception) HelpLink

Получает или задает ссылку на файл справки, связанный с этим исключением.

(Унаследовано от Exception) HResult

Возвращает или задает HRESULT — кодированное числовое значение, присвоенное определенному исключению.

(Унаследовано от Exception) InnerException

Возвращает экземпляр класса Exception, который вызвал текущее исключение.

(Унаследовано от Exception) Message

Возвращает сообщение, описывающее текущее исключение.

(Унаследовано от Exception) Source

Возвращает или задает имя приложения или объекта, вызывавшего ошибку.

(Унаследовано от Exception) StackTrace

Получает строковое представление непосредственных кадров в стеке вызова.

(Унаследовано от Exception) TargetSite

Возвращает метод, создавший текущее исключение.

(Унаследовано от Exception)

Методы

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object) GetBaseException()

При переопределении в производном классе возвращает исключение Exception, которое является первопричиной одного или нескольких последующих исключений.

(Унаследовано от Exception) GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object) GetObjectData(SerializationInfo, StreamingContext)

При переопределении в производном классе задает объект SerializationInfo со сведениями об исключении.

(Унаследовано от Exception) GetType()

Возвращает тип среды выполнения текущего экземпляра.

(Унаследовано от Exception) MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object) ToString()

Создает и возвращает строковое представление текущего исключения.

(Унаследовано от Exception)

События

Возникает, когда исключение сериализовано для создания объекта состояния исключения, содержащего сериализованные данные об исключении.

Источник

Smartadm.ru
Adblock
detector