summaryrefslogtreecommitdiff
path: root/src/mscorlib/shared/System/TypeInitializationException.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/shared/System/TypeInitializationException.cs')
-rw-r--r--src/mscorlib/shared/System/TypeInitializationException.cs79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/mscorlib/shared/System/TypeInitializationException.cs b/src/mscorlib/shared/System/TypeInitializationException.cs
new file mode 100644
index 0000000000..9191028346
--- /dev/null
+++ b/src/mscorlib/shared/System/TypeInitializationException.cs
@@ -0,0 +1,79 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*=============================================================================
+**
+**
+**
+** Purpose: The exception class to wrap exceptions thrown by
+** a type's class initializer (.cctor). This is sufficiently
+** distinct from a TypeLoadException, which means we couldn't
+** find the type.
+**
+**
+=============================================================================*/
+
+using System.Globalization;
+using System.Runtime.Serialization;
+
+namespace System
+{
+ [Serializable]
+ public sealed class TypeInitializationException : SystemException
+ {
+ private String _typeName;
+
+ // This exception is not creatable without specifying the
+ // inner exception.
+ private TypeInitializationException()
+ : base(SR.TypeInitialization_Default)
+ {
+ HResult = __HResults.COR_E_TYPEINITIALIZATION;
+ }
+
+
+ public TypeInitializationException(String fullTypeName, Exception innerException)
+ : this(fullTypeName, SR.Format(SR.TypeInitialization_Type, fullTypeName), innerException)
+ {
+ }
+
+ // This is called from within the runtime. I believe this is necessary
+ // for Interop only, though it's not particularly useful.
+ internal TypeInitializationException(String message) : base(message)
+ {
+ HResult = __HResults.COR_E_TYPEINITIALIZATION;
+ }
+
+ internal TypeInitializationException(String fullTypeName, String message, Exception innerException)
+ : base(message, innerException)
+ {
+ _typeName = fullTypeName;
+ HResult = __HResults.COR_E_TYPEINITIALIZATION;
+ }
+
+ internal TypeInitializationException(SerializationInfo info, StreamingContext context)
+ : base(info, context)
+ {
+ _typeName = info.GetString("TypeName");
+ }
+
+ public override void GetObjectData(SerializationInfo info, StreamingContext context)
+ {
+ base.GetObjectData(info, context);
+ info.AddValue("TypeName", TypeName, typeof(String));
+ }
+
+ public String TypeName
+ {
+ get
+ {
+ if (_typeName == null)
+ {
+ return String.Empty;
+ }
+ return _typeName;
+ }
+ }
+ }
+}