Bagikan melalui


TypeLoadException Konstruktor

Definisi

Menginisialisasi instans baru kelas TypeLoadException.

Overload

TypeLoadException()

Menginisialisasi instans baru kelas TypeLoadException.

TypeLoadException(String)

Menginisialisasi instans TypeLoadException baru kelas dengan pesan kesalahan yang ditentukan.

TypeLoadException(SerializationInfo, StreamingContext)
Kedaluwarsa.

Menginisialisasi instans TypeLoadException baru kelas dengan data berseri.

TypeLoadException(String, Exception)

Menginisialisasi instans TypeLoadException baru kelas dengan pesan kesalahan yang ditentukan dan referensi ke pengecualian dalam yang merupakan penyebab pengecualian ini.

TypeLoadException()

Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs

Menginisialisasi instans baru kelas TypeLoadException.

public:
 TypeLoadException();
public TypeLoadException ();
Public Sub New ()

Keterangan

Konstruktor ini menginisialisasi properti instans Message baru ke pesan yang disediakan sistem yang menjelaskan kesalahan, seperti "Kegagalan telah terjadi saat memuat jenis." Pesan ini memperhitungkan budaya sistem saat ini.

Tabel berikut ini memperlihatkan nilai properti awal untuk instans TypeLoadException.

Properti Nilai
InnerException Referensi null (Nothing di Visual Basic).
Message String pesan kesalahan yang dilokalkan.

Berlaku untuk

TypeLoadException(String)

Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs

Menginisialisasi instans TypeLoadException baru kelas dengan pesan kesalahan yang ditentukan.

public:
 TypeLoadException(System::String ^ message);
public TypeLoadException (string message);
public TypeLoadException (string? message);
new TypeLoadException : string -> TypeLoadException
Public Sub New (message As String)

Parameter

message
String

Pesan yang menjelaskan kesalahan.

Contoh

Contoh kode berikut menunjukkan TypeLoadException(String) konstruktor. Ini berisi metode yang menghasilkan TypeLoadException dengan pesan kustom, dan menampilkan pesan kesalahan ke konsol.

using namespace System;

class TypeLoadExceptionDemoClass
{
   public:
      static bool GenerateException()
      {
         // Throw a TypeLoadException with a custom message.
         throw gcnew TypeLoadException("This is a custom TypeLoadException error message.");
      }
};

int main()
{
   try {
      // Call a method that throws an exception.  
      TypeLoadExceptionDemoClass::GenerateException();
   }
   catch ( TypeLoadException^ e ) {
      Console::WriteLine("TypeLoadException:\n   {0}", e->Message);
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: \n\tError Message = {0}", e->Message );
   }

}
// The example displays the following output:
//       TypeLoadException:
//          This is a custom TypeLoadException error message.
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.

Keterangan

Konten message parameter harus dapat dimengerti oleh pengguna. Pemanggil konstruktor ini diperlukan untuk memastikan bahwa string ini telah dilokalkan untuk budaya sistem saat ini.

Tabel berikut ini memperlihatkan nilai properti awal untuk instans TypeLoadException.

Properti Nilai
InnerException Referensi null (Nothing di Visual Basic).
Message String pesan kesalahan.

Berlaku untuk

TypeLoadException(SerializationInfo, StreamingContext)

Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs

Perhatian

This API supports obsolete formatter-based serialization. It should not be called or extended by application code.

Menginisialisasi instans TypeLoadException baru kelas dengan data berseri.

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}")]
protected TypeLoadException (System.Runtime.Serialization.SerializationInfo info, System.Runtime.Serialization.StreamingContext context);
new TypeLoadException : System.Runtime.Serialization.SerializationInfo * System.Runtime.Serialization.StreamingContext -> TypeLoadException
[<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
Protected Sub New (info As SerializationInfo, context As StreamingContext)

Parameter

info
SerializationInfo

Objek yang menyimpan data objek berseri.

context
StreamingContext

Informasi kontekstual tentang sumber atau tujuan.

Atribut

Pengecualian

Objeknya info adalah null.

Contoh

Contoh berikut menghasilkan pengecualian, dan menserialisasikan data pengecualian ke file, lalu menyusun ulang pengecualian. Agar contoh kode ini berjalan, Anda harus memberikan nama rakitan yang sepenuhnya memenuhi syarat. Untuk informasi tentang cara mendapatkan nama rakitan yang sepenuhnya memenuhi syarat, lihat Nama Rakitan.

#using <System.Runtime.Serialization.Formatters.Soap.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Runtime::Serialization;
using namespace System::Runtime::Serialization::Formatters::Soap;
using namespace System::IO;

// This class overrides the GetObjectData method and initializes
// its data with current time. 

[Serializable]
public ref class MyTypeLoadExceptionChild: public TypeLoadException
{
public:
   System::DateTime ErrorDateTime;
   MyTypeLoadExceptionChild()
   {
      ErrorDateTime = DateTime::Now;
   }

   MyTypeLoadExceptionChild( DateTime myDateTime )
   {
      ErrorDateTime = myDateTime;
   }


protected:
   MyTypeLoadExceptionChild( SerializationInfo^ sInfo, StreamingContext * sContext )
   {
      
      // Reconstitute the deserialized information into the instance.
      ErrorDateTime = sInfo->GetDateTime( "ErrorDate" );
   }


public:
   void GetObjectData( SerializationInfo^ sInfo, StreamingContext * sContext )
   {
      
      // Add a value to the Serialization information.
      sInfo->AddValue( "ErrorDate", ErrorDateTime );
   }

};

int main()
{
   
   // Load the mscorlib assembly and get a reference to it.
   // You must supply the fully qualified assembly name for mscorlib.dll here.
   Assembly^ myAssembly = Assembly::Load( "Assembly text name, Version, Culture, PublicKeyToken" );
   try
   {
      Console::WriteLine( "Attempting to load a type not present in the assembly 'mscorlib'" );
      
      // This loading of invalid type raises a TypeLoadException
      Type^ myType = myAssembly->GetType( "System::NonExistentType", true );
   }
   catch ( TypeLoadException^ ) 
   {
      
      // Serialize the exception to disk and reconstitute it back again.
      try
      {
         System::DateTime ErrorDatetime = DateTime::Now;
         Console::WriteLine( "A TypeLoadException has been raised." );
         
         // Create MyTypeLoadException instance with current time.
         MyTypeLoadExceptionChild^ myTypeLoadExceptionChild = gcnew MyTypeLoadExceptionChild( ErrorDatetime );
         IFormatter^ myFormatter = gcnew SoapFormatter;
         Stream^ myFileStream = gcnew FileStream( "typeload.xml",FileMode::Create,FileAccess::Write,FileShare::None );
         Console::WriteLine( "Serializing the TypeLoadException with DateTime as {0}", ErrorDatetime );
         
         // Serialize the MyTypeLoadException instance to a file.
         myFormatter->Serialize( myFileStream, myTypeLoadExceptionChild );
         myFileStream->Close();
         Console::WriteLine( "Deserializing the Exception." );
         myFileStream = gcnew FileStream( "typeload.xml",FileMode::Open,FileAccess::Read,FileShare::None );
         
         // Deserialize and reconstitute the instance from file.
         myTypeLoadExceptionChild = safe_cast<MyTypeLoadExceptionChild^>(myFormatter->Deserialize( myFileStream ));
         myFileStream->Close();
         Console::WriteLine( "Deserialized exception has ErrorDateTime = {0}", myTypeLoadExceptionChild->ErrorDateTime );
      }
      catch ( Exception^ e ) 
      {
         Console::WriteLine( "Exception : {0}", e->Message );
      }

   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception : {0}", e->Message );
   }

}

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

Keterangan

Konstruktor ini dipanggil selama deserialisasi untuk menyusun ulang objek pengecualian yang ditransmisikan melalui aliran. Untuk informasi selengkapnya, lihat Serialisasi XML dan SOAP.

Lihat juga

Berlaku untuk

TypeLoadException(String, Exception)

Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs
Sumber:
TypeLoadException.cs

Menginisialisasi instans TypeLoadException baru kelas dengan pesan kesalahan yang ditentukan dan referensi ke pengecualian dalam yang merupakan penyebab pengecualian ini.

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)

Parameter

message
String

Pesan kesalahan yang menjelaskan alasan pengecualian.

inner
Exception

Pengecualian yang merupakan penyebab pengecualian saat ini. inner Jika parameter bukan null, pengecualian saat ini dimunculkan dalam catch blok yang menangani pengecualian dalam.

Contoh

Contoh kode berikut menunjukkan TypeLoadException(String, Exception) konstruktor. Ini berisi metode yang menghasilkan TypeLoadException, menangkap pengecualian itu, dan melemparkan TypeLoadException baru dengan pesan kustom, termasuk yang asli TypeLoadException sebagai pengecualian dalam.

using namespace System;
using namespace System::Runtime::InteropServices;
ref class TypeLoadExceptionDemoClass
{
public:

   // A call to this method will raise a TypeLoadException.

   [DllImport("NonExistentDLL.DLL",EntryPoint="MethodNotExists")]
   static void NonExistentMethod();
   static void GenerateException()
   {
      try
      {
         NonExistentMethod();
      }
      catch ( TypeLoadException^ e ) 
      {
         
         // Rethrow exception with the exception as inner exception
         throw gcnew TypeLoadException( "This exception was raised due to a call to an invalid method.",e );
      }

   }

};

int main()
{
   Console::WriteLine( "Calling a method in a non-existent DLL which triggers a TypeLoadException." );
   try
   {
      TypeLoadExceptionDemoClass::GenerateException();
   }
   catch ( TypeLoadException^ e ) 
   {
      Console::WriteLine( "TypeLoadException: \n\tError Message = {0}", e->Message );
      Console::WriteLine( "TypeLoadException: \n\tInnerException Message = {0}", e->InnerException->Message );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "Exception: \n\tError Message = {0}", e->Message );
   }

}
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

Keterangan

Pengecualian yang dilemparkan sebagai hasil langsung dari pengecualian sebelumnya dapat menyertakan referensi ke pengecualian sebelumnya dalam InnerException properti . Properti InnerException mengembalikan nilai yang sama yang diteruskan ke konstruktor, atau null jika InnerException properti tidak menyediakan nilai pengecualian dalam ke konstruktor.

Tabel berikut ini memperlihatkan nilai properti awal untuk instans TypeLoadException.

Properti Nilai
InnerException Referensi pengecualian dalam.
Message String pesan kesalahan.

Lihat juga

Berlaku untuk