Type constructor threw an exception



Type Initialization Exception Класс

Определение

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

Исключение, которое выбрасывается как оболочка для исключения, выброшенного инициализатором класса. Этот класс не наследуется.

Комментарии

Если инициализация типа инициализатором класса завершилась сбоем, то будет создан объект TypeInitializationException, которому будет передана ссылка на исключение, созданное инициализатором класса этого типа. Свойство InnerException объекта TypeInitializationException содержит базовое исключение.

Как правило, TypeInitializationException исключение отражает катастрофическое состояние (среда выполнения не может создать экземпляр типа), которое препятствует продолжению работы приложения. Чаще TypeInitializationException всего возникает исключение в ответ на некоторые изменения в среде выполнения приложения. Следовательно, исключение, кроме возможного для устранения неполадок кода отладки, не должно обрабатываться в блоке try / catch . Вместо этого следует изучить и устранить причину исключения.

TypeInitializationException использует COR_E_TYPEINITIALIZATION HRESULT со значением 0x80131534.

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

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

Статические конструкторы и TypeInitializationException

Статический конструктор, если он существует, вызывается автоматически средой выполнения перед созданием нового экземпляра типа. Статические конструкторы могут быть явно определены разработчиком. Если статический конструктор не определен явным образом, компиляторы автоматически создают его для инициализации любых static элементов типа (в C# или F#) или Shared (в Visual Basic). Дополнительные сведения о статических конструкторах см. в разделе Статические конструкторы.

Чаще всего исключение возникает, TypeInitializationException когда статический конструктор не может создать экземпляр типа. Свойство InnerException указывает, почему статическому конструктору не удалось создать экземпляр типа. Ниже приведены некоторые из наиболее распространенных TypeInitializationException причин исключения.

Читайте также:  Windows error 789 l2tp windows 7

Необработанное исключение в статическом конструкторе

Если исключение создается в статическом конструкторе, это исключение упаковывается в TypeInitializationException исключение, и экземпляр типа невозможно создать.

Что часто затрудняет устранение неполадок с этим исключением, так это то, что статические конструкторы не всегда явно определены в исходном коде. Статический конструктор существует в типе, если:

Он был явно определен как член типа.

Тип содержит static переменные (в C# или F#) или Shared (в Visual Basic), которые объявлены и инициализированы в одной инструкции. В этом случае компилятор языка создает статический конструктор для типа . Его можно проверить с помощью служебной программы, такой как IL Disassembler. Например, когда компиляторы C# и VB компилируют следующий пример, они создают il для статического конструктора, похожего на следующий:

В следующем примере показано исключение, TypeInitializationException создаваемое статическим конструктором, созданным компилятором. Класс Example включает static поле типа (в C#) или Shared (в Visual Basic), экземпляр которого TestClass создается путем передачи значения 3 в конструктор класса. Однако это значение является незаконным; Допустимы только значения 0 или 1. В результате TestClass конструктор класса создает ArgumentOutOfRangeExceptionисключение . Так как это исключение не обрабатывается, оно упаковывается в TypeInitializationException исключение.

Обратите внимание, что в сообщении об исключении отображаются сведения о свойстве InnerException .

Отсутствующий файл сборки или данных

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

Затем можно скомпилировать следующий пример в исполняемый файл с именем Missing1.exe, включив ссылку на Missing1a.dll:

Однако при переименовании, перемещении или удалении Missing1a.dll и выполнении примера создается TypeInitializationException исключение и отображается результат, показанный в примере. Обратите внимание, что сообщение об исключении содержит сведения о свойстве InnerException . В этом случае внутренним исключением является FileNotFoundException исключение , которое возникает из-за того, что среда выполнения не может найти зависимую сборку.

Читайте также:  500 internal server error ajax post php

В этом примере возникло исключение, TypeInitializationException так как не удалось загрузить сборку. Исключение также может возникать, если статический конструктор пытается открыть файл данных, например файл конфигурации, XML-файл или файл, содержащий сериализованные данные, который он не может найти.

Значения времени ожидания совпадения регулярных выражений

Можно задать значение времени ожидания по умолчанию для операции сопоставления шаблонов регулярных выражений для каждого домена приложения. Время ожидания определяется параметром TimeSpan , задающим значение для свойства AppDomain.SetData «REGEX_DEFAULT_MATCH_TIMEOUT» для метода . Интервал времени должен быть допустимым TimeSpan объектом, который больше нуля и меньше приблизительно 24 дней. Если эти требования не выполняются, попытка задать значение времени ожидания по умолчанию вызывает ArgumentOutOfRangeExceptionисключение , которое, в свою очередь, упаковывается в TypeInitializationException исключение.

В следующем примере показан объект , TypeInitializationException который создается, если значение, присвоенное свойству «REGEX_DEFAULT_MATCH_TIMEOUT», является недопустимым. Чтобы исключить исключение, присвойте свойству TimeSpan «REGEX_DEFAULT_MATCH_TIMEOUT» значение, которое больше нуля и меньше приблизительно 24 дней.

Календари и культурные данные

При попытке создать экземпляр календаря, но среде выполнения не удается создать экземпляр объекта, соответствующего CultureInfo календарю, возникает TypeInitializationException исключение. Это исключение может быть вызвано следующими конструкторами классов календаря:

Конструктор JapaneseCalendar класса без параметров.

Конструктор KoreanCalendar класса без параметров.

Конструктор TaiwanCalendar класса без параметров.

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

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

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

Свойства

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

Читайте также:  Error opening filters что это

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Возвращает полное имя типа, который не удалось инициализировать.

Методы

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

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

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

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

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

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

Задает имя типа и дополнительные сведения об исключении для объекта SerializationInfo.

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

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

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

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

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

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

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

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

События

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

Источник

Оцените статью
toolgir.ru
Adblock
detector