TypeLoadException Конструкторы
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Инициализирует новый экземпляр класса TypeLoadException.
Перегрузки
| Имя | Описание |
|---|---|
| TypeLoadException() |
Инициализирует новый экземпляр класса TypeLoadException. |
| TypeLoadException(String) |
Инициализирует новый экземпляр TypeLoadException класса с указанным сообщением об ошибке. |
| TypeLoadException(SerializationInfo, StreamingContext) |
Устаревшие..
Инициализирует новый экземпляр TypeLoadException класса сериализованными данными. |
| TypeLoadException(String, Exception) |
Инициализирует новый экземпляр TypeLoadException класса с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое является причиной этого исключения. |
TypeLoadException()
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
Инициализирует новый экземпляр класса TypeLoadException.
public:
TypeLoadException();
public TypeLoadException();
Public Sub New ()
Комментарии
Этот конструктор инициализирует Message свойство нового экземпляра в системном сообщении, описывающем ошибку, например "Произошел сбой при загрузке типа". Это сообщение учитывает текущий язык и региональные параметры системы.
В следующей таблице показаны начальные значения свойств для экземпляра TypeLoadException.
| Недвижимость | Ценность |
|---|---|
| InnerException | Ссылка null (Nothing в Visual Basic). |
| Message | Локализованная строка сообщения об ошибке. |
Применяется к
TypeLoadException(String)
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
Инициализирует новый экземпляр TypeLoadException класса с указанным сообщением об ошибке.
public:
TypeLoadException(System::String ^ message);
public TypeLoadException(string message);
public TypeLoadException(string? message);
new TypeLoadException : string -> TypeLoadException
Public Sub New (message As String)
Параметры
- message
- String
Сообщение, описывающее ошибку.
Примеры
В следующем примере кода показан TypeLoadException(String) конструктор. Он содержит метод, который создает TypeLoadException пользовательское сообщение и отображает сообщение об ошибке в консоли.
using System;
public class Example
{
public static void Main()
{
try {
// Call a method that throws an exception.
TypeLoadExceptionDemoClass.GenerateException();
}
catch (TypeLoadException e) {
Console.WriteLine("TypeLoadException:\n {0}", e.Message);
}
}
}
class TypeLoadExceptionDemoClass
{
public static bool GenerateException()
{
// Throw a TypeLoadException with a custom defined message.
throw new TypeLoadException("This is a custom TypeLoadException error message.");
}
}
// The example displays the following output:
// TypeLoadException:
// This is a custom TypeLoadException error message.
Public Class Example
Public Shared Sub Main()
Try
' Call a method that throws an exception.
TypeLoadExceptionDemoClass.GenerateException()
Catch e As TypeLoadException
Console.WriteLine("TypeLoadException:{0} {1}", vbCrLf, e.Message)
End Try
End Sub
End Class
Class TypeLoadExceptionDemoClass
Public Shared Function GenerateException() As Boolean
' Throw a TypeLoadException with a custom message.
Throw New TypeLoadException("This is a custom TypeLoadException error message.")
End Function
End Class
' The example displays the following output:
' TypeLoadException:
' This is a custom TypeLoadException error message.
Комментарии
Содержимое message параметра должно быть понятно пользователю. Вызывающий объект этого конструктора необходим, чтобы убедиться, что эта строка локализована для текущего языка и региональных параметров системы.
В следующей таблице показаны начальные значения свойств для экземпляра TypeLoadException.
| Недвижимость | Ценность |
|---|---|
| InnerException | Ссылка null (Nothing в Visual Basic). |
| Message | Строка сообщения об ошибке. |
Применяется к
TypeLoadException(SerializationInfo, StreamingContext)
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
Внимание
This API supports obsolete formatter-based serialization. It should not be called or extended by application code.
Инициализирует новый экземпляр TypeLoadException класса сериализованными данными.
protected:
TypeLoadException(System::Runtime::Serialization::SerializationInfo ^ info, System::Runtime::Serialization::StreamingContext context);
[System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
protected TypeLoadException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
protected TypeLoadException(System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
[<System.Obsolete("This API supports obsolete formatter-based serialization. It should not be called or extended by application code.", DiagnosticId="SYSLIB0051", UrlFormat="https://aka.ms/dotnet-warnings/{0}")>]
new TypeLoadException : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> TypeLoadException
new TypeLoadException : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> TypeLoadException
Protected Sub New (info As SerializationInfo, context As StreamingContext)
Параметры
- info
- SerializationInfo
Объект, содержащий сериализованные данные объекта.
- context
- StreamingContext
Контекстные сведения о источнике или назначении.
- Атрибуты
Исключения
Объект info имеет значение null.
Примеры
В следующем примере создается исключение и сериализуется данные исключения в файл, а затем восстанавливается исключение. Для выполнения этого примера кода необходимо указать полное имя сборки. Сведения о том, как получить полное имя сборки, см. в разделе "Имена сборок".
using System;
using System.Reflection;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
using System.IO;
class GetObjectDataDemo
{
public static void Main()
{
// Get a reference to the assembly mscorlib.dll, which is always
// loaded. (System.String is defined in mscorlib.)
Assembly mscorlib = typeof(string).Assembly;
try
{
Console.WriteLine ("Attempting to load a type not present in the assembly 'mscorlib'");
// This loading of invalid type raises a TypeLoadException
Type myType = mscorlib.GetType("System.NonExistentType", true);
}
catch (TypeLoadException)
{
// Serialize the exception to disk and reconstitute it.
System.DateTime ErrorDatetime = DateTime.Now;
Console.WriteLine("A TypeLoadException has been raised.");
// Create MyTypeLoadException instance with current time.
MyTypeLoadException myException = new MyTypeLoadException(ErrorDatetime);
IFormatter myFormatter = new SoapFormatter();
Stream myFileStream = new FileStream("typeload.xml", FileMode.Create, FileAccess.Write, FileShare.None);
Console.WriteLine("Serializing the TypeLoadException with DateTime as " + ErrorDatetime);
// Serialize the MyTypeLoadException instance to a file.
myFormatter.Serialize(myFileStream, myException);
myFileStream.Close();
Console.WriteLine("Deserializing the Exception.");
myFileStream = new FileStream("typeload.xml", FileMode.Open, FileAccess.Read, FileShare.None);
// Deserialize and reconstitute the instance from file.
myException = (MyTypeLoadException) myFormatter.Deserialize(myFileStream);
myFileStream.Close();
Console.WriteLine("Deserialized exception has ErrorDateTime = " + myException.ErrorDateTime);
}
}
}
// This class overrides the GetObjectData method and initializes
// its data with current time.
[Serializable]
public class MyTypeLoadException : TypeLoadException
{
private System.DateTime _errorDateTime = DateTime.Now;
public DateTime ErrorDateTime { get { return _errorDateTime; }}
public MyTypeLoadException(DateTime myDateTime)
{
_errorDateTime = myDateTime;
}
protected MyTypeLoadException(SerializationInfo sInfo, StreamingContext sContext)
: base(sInfo, sContext)
{
// Reconstitute the deserialized information into the instance.
_errorDateTime = sInfo.GetDateTime("ErrorDate");
}
public override void GetObjectData(SerializationInfo sInfo, StreamingContext sContext)
{
base.GetObjectData(sInfo, sContext);
// Add a value to the Serialization information.
sInfo.AddValue("ErrorDate", ErrorDateTime);
}
}
Imports System.Reflection
Imports System.Runtime.Serialization
Imports System.Runtime.Serialization.Formatters.Soap
Imports System.Security.Permissions
Imports System.IO
Class GetObjectDataDemo
Public Shared Sub Main()
' Get a reference to the assembly mscorlib.dll, which is always
' loaded. (System.String is defined in mscorlib.)
Dim tString As Type = GetType(String)
Dim mscorlib As [Assembly] = tString.Assembly
Try
Console.WriteLine("Attempting to load a type not present in the assembly 'mscorlib'")
' This loading of invalid type raises a TypeLoadException
Dim myType As Type = mscorlib.GetType("System.NonExistentType", True)
Catch
' Serialize the exception to disk and reconstitute it.
Dim ErrorDatetime as System.DateTime = DateTime.Now
Console.WriteLine("A TypeLoadException has been raised.")
' Create MyTypeLoadException instance with current time.
Dim myException As new MyTypeLoadException(ErrorDatetime)
Dim myFormatter as IFormatter = new SoapFormatter()
Dim myFileStream as Stream
myFileStream = New FileStream("typeload.xml", FileMode.Create, FileAccess.Write, FileShare.None)
Console.WriteLine("Serializing the TypeLoadException with DateTime as " _
& ErrorDatetime.ToString())
' Serialize the MyTypeLoadException instance to a file.
myFormatter.Serialize(myFileStream, myException)
myFileStream.Close()
Console.WriteLine("Deserializing the Exception.")
myFileStream = New FileStream("typeload.xml", FileMode.Open, FileAccess.Read, FileShare.None)
' Deserialize and reconstitute the instance from file.
myException = CType(myFormatter.Deserialize(myFileStream), MyTypeLoadException)
myFileStream.Close()
Console.WriteLine("Deserialized exception has ErrorDateTime = " + myException.ErrorDateTime.ToString())
End Try
End Sub
End Class
' This class overrides the GetObjectData method and initializes
' its data with current time.
<Serializable()> _
Public Class MyTypeLoadException
Inherits TypeLoadException
Private _errorDateTime As System.DateTime = DateTime.Now
Public ReadOnly Property ErrorDateTime As DateTime
Get
Return _errorDateTime
End Get
End Property
Public Sub New(myDateTime As DateTime)
_errorDateTime = myDateTime
End Sub
Protected Sub New(sInfo As SerializationInfo, sContext As StreamingContext)
MyBase.New(sInfo, sContext)
' Reconstitute the deserialized information into the instance.
_errorDateTime = sInfo.GetDateTime("ErrorDate")
End Sub
' GetObjectData overrides must always have a demand for SerializationFormatter.
<SecurityPermissionAttribute(SecurityAction.Demand, SerializationFormatter:=true)> _
Public Overrides Sub GetObjectData(sInfo As SerializationInfo, sContext As StreamingContext)
MyBase.GetObjectData(sInfo, sContext)
' Add a value to the Serialization information.
sInfo.AddValue("ErrorDate", ErrorDateTime)
End Sub
End Class
Комментарии
Этот конструктор вызывается во время десериализации, чтобы восстановить объект исключения, передаваемый через поток. Дополнительные сведения см. в статье о сериализации XML и SOAP.
См. также раздел
Применяется к
TypeLoadException(String, Exception)
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
- Исходный код:
- TypeLoadException.cs
Инициализирует новый экземпляр TypeLoadException класса с указанным сообщением об ошибке и ссылкой на внутреннее исключение, которое является причиной этого исключения.
public:
TypeLoadException(System::String ^ message, Exception ^ inner);
public TypeLoadException(string message, Exception inner);
public TypeLoadException(string? message, Exception? inner);
new TypeLoadException : string * Exception -> TypeLoadException
Public Sub New (message As String, inner As Exception)
Параметры
- message
- String
Сообщение об ошибке, объясняющее причину исключения.
- inner
- Exception
Исключение, которое является причиной текущего исключения.
inner Если параметр не nullзадан, текущее исключение возникает в блокеcatch, обрабатывающего внутреннее исключение.
Примеры
В следующем примере кода показан TypeLoadException(String, Exception) конструктор. Он содержит метод, который создает исключение, перехватывает TypeLoadExceptionэто исключение и создает новое TypeLoadException с пользовательским сообщением, включая оригинал TypeLoadException в качестве внутреннего исключения.
using System;
using System.Runtime.InteropServices;
public class TypeLoadException_Constructor3
{
public static void Main()
{
Console.WriteLine("Calling a method in a non-existent DLL which triggers a TypeLoadException.");
try
{
TypeLoadExceptionDemoClass3.GenerateException();
}
catch (TypeLoadException e)
{
Console.WriteLine ("TypeLoadException: \n\tError Message = " + e.Message);
Console.WriteLine ("TypeLoadException: \n\tInnerException Message = " + e.InnerException.Message );
}
catch (Exception e)
{
Console.WriteLine ("Exception: \n\tError Message = " + e.Message);
}
}
}
class TypeLoadExceptionDemoClass3
{
// A call to this method will raise a TypeLoadException.
[DllImport("NonExistentDLL.DLL", EntryPoint="MethodNotExists")]
public static extern void NonExistentMethod();
public static void GenerateException()
{
try
{
NonExistentMethod();
}
catch (TypeLoadException e)
{
// Rethrow exception with the exception as inner exception
throw new TypeLoadException("This exception was raised due to a call to an invalid method.", e);
}
}
}
Imports System.Runtime.InteropServices
Public Class TypeLoadException_Constructor3
Public Shared Sub Main()
Console.WriteLine("Calling a method in a non-existent DLL which triggers a TypeLoadException.")
Try
TypeLoadExceptionDemoClass.GenerateException()
Catch e As TypeLoadException
Console.WriteLine(("TypeLoadException: " + ControlChars.Cr + ControlChars.Tab + "Error Message = " + e.Message))
Console.WriteLine(("TypeLoadException: " + ControlChars.Cr + ControlChars.Tab + "InnerException Message = " + e.InnerException.Message))
Catch e As Exception
Console.WriteLine(("Exception: " + ControlChars.Cr + ControlChars.Tab + "Error Message = " + e.Message))
End Try
End Sub
End Class
Class TypeLoadExceptionDemoClass
' A call to this method will raise a TypeLoadException.
Public Declare Sub NonExistentMethod Lib "NonExistentDLL.DLL" Alias "MethodNotExists" ()
Public Shared Sub GenerateException()
Try
NonExistentMethod()
Catch e As TypeLoadException
' Rethrow exception with the exception as inner exception
Throw New TypeLoadException("This exception was raised due to a call to an invalid method.", e)
End Try
End Sub
End Class
Комментарии
Исключение, которое возникает в результате предыдущего исключения, может содержать ссылку на предыдущее исключение в свойстве InnerException . Свойство InnerException возвращает то же значение, которое передается в конструктор, или null если InnerException свойство не предоставляет внутреннее значение исключения конструктору.
В следующей таблице показаны начальные значения свойств для экземпляра TypeLoadException.
| Недвижимость | Ценность |
|---|---|
| InnerException | Ссылка на внутреннее исключение. |
| Message | Строка сообщения об ошибке. |