using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Runtime.Serialization;
using System.Text;
namespace System
{
/// Represents errors that occur during application execution.
/// 1
// Token: 0x02000039 RID: 57
[ClassInterface(ClassInterfaceType.None)]
[ComDefaultInterface(typeof(_Exception))]
[ComVisible(true)]
[Serializable]
public class Exception : ISerializable, _Exception
{
/// Initializes a new instance of the class.
// Token: 0x06000613 RID: 1555 RVA: 0x00013E5C File Offset: 0x0001205C
public Exception()
{
}
/// Initializes a new instance of the class with a specified error message.
/// The message that describes the error.
// Token: 0x06000614 RID: 1556 RVA: 0x00013E70 File Offset: 0x00012070
public Exception(string message)
{
this.message = message;
}
/// Initializes a new instance of the class with serialized data.
/// The that holds the serialized object data about the exception being thrown.
/// The that contains contextual information about the source or destination.
/// The parameter is null.
/// The class name is null or is zero (0).
// Token: 0x06000615 RID: 1557 RVA: 0x00013E8C File Offset: 0x0001208C
protected Exception(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
this.class_name = info.GetString("ClassName");
this.message = info.GetString("Message");
this.help_link = info.GetString("HelpURL");
this.stack_trace = info.GetString("StackTraceString");
this._remoteStackTraceString = info.GetString("RemoteStackTraceString");
this.remote_stack_index = info.GetInt32("RemoteStackIndex");
this.hresult = info.GetInt32("HResult");
this.source = info.GetString("Source");
this.inner_exception = (Exception)info.GetValue("InnerException", typeof(Exception));
try
{
this._data = (IDictionary)info.GetValue("Data", typeof(IDictionary));
}
catch (SerializationException)
{
}
}
/// Initializes a new instance of the class with a specified error message and a reference to the inner exception that is the cause of this exception.
/// The error message that explains the reason for the exception.
/// The exception that is the cause of the current exception, or a null reference (Nothing in Visual Basic) if no inner exception is specified.
// Token: 0x06000616 RID: 1558 RVA: 0x00013FAC File Offset: 0x000121AC
public Exception(string message, Exception innerException)
{
this.inner_exception = innerException;
this.message = message;
}
/// Gets the instance that caused the current exception.
/// An instance of Exception that describes the error that caused the current exception. The InnerException property returns the same value as was passed into the constructor, or a null reference (Nothing in Visual Basic) if the inner exception value was not supplied to the constructor. This property is read-only.
/// 1
// Token: 0x1700009B RID: 155
// (get) Token: 0x06000617 RID: 1559 RVA: 0x00013FD0 File Offset: 0x000121D0
public Exception InnerException
{
get
{
return this.inner_exception;
}
}
/// Gets or sets a link to the help file associated with this exception.
/// The Uniform Resource Name (URN) or Uniform Resource Locator (URL).
/// 2
// Token: 0x1700009C RID: 156
// (get) Token: 0x06000618 RID: 1560 RVA: 0x00013FD8 File Offset: 0x000121D8
// (set) Token: 0x06000619 RID: 1561 RVA: 0x00013FE0 File Offset: 0x000121E0
public virtual string HelpLink
{
get
{
return this.help_link;
}
set
{
this.help_link = value;
}
}
/// Gets or sets HRESULT, a coded numerical value that is assigned to a specific exception.
/// The HRESULT value.
// Token: 0x1700009D RID: 157
// (get) Token: 0x0600061A RID: 1562 RVA: 0x00013FEC File Offset: 0x000121EC
// (set) Token: 0x0600061B RID: 1563 RVA: 0x00013FF4 File Offset: 0x000121F4
protected int HResult
{
get
{
return this.hresult;
}
set
{
this.hresult = value;
}
}
// Token: 0x0600061C RID: 1564 RVA: 0x00014000 File Offset: 0x00012200
internal void SetMessage(string s)
{
this.message = s;
}
// Token: 0x0600061D RID: 1565 RVA: 0x0001400C File Offset: 0x0001220C
internal void SetStackTrace(string s)
{
this.stack_trace = s;
}
// Token: 0x1700009E RID: 158
// (get) Token: 0x0600061E RID: 1566 RVA: 0x00014018 File Offset: 0x00012218
private string ClassName
{
get
{
if (this.class_name == null)
{
this.class_name = this.GetType().ToString();
}
return this.class_name;
}
}
/// Gets a message that describes the current exception.
/// The error message that explains the reason for the exception, or an empty string("").
/// 1
// Token: 0x1700009F RID: 159
// (get) Token: 0x0600061F RID: 1567 RVA: 0x00014048 File Offset: 0x00012248
public virtual string Message
{
get
{
if (this.message == null)
{
this.message = string.Format(Locale.GetText("Exception of type '{0}' was thrown."), this.ClassName);
}
return this.message;
}
}
/// Gets or sets the name of the application or the object that causes the error.
/// The name of the application or the object that causes the error.
/// The object must be a runtime object.
/// 2
// Token: 0x170000A0 RID: 160
// (get) Token: 0x06000620 RID: 1568 RVA: 0x00014084 File Offset: 0x00012284
// (set) Token: 0x06000621 RID: 1569 RVA: 0x000140EC File Offset: 0x000122EC
public virtual string Source
{
get
{
if (this.source == null)
{
StackTrace stackTrace = new StackTrace(this, true);
if (stackTrace.FrameCount > 0)
{
StackFrame frame = stackTrace.GetFrame(0);
if (stackTrace != null)
{
MethodBase method = frame.GetMethod();
if (method != null)
{
this.source = method.DeclaringType.Assembly.UnprotectedGetName().Name;
}
}
}
}
return this.source;
}
set
{
this.source = value;
}
}
/// Gets a string representation of the frames on the call stack at the time the current exception was thrown.
/// A string that describes the immediate frames of the call stack.
/// 2
///
///
///
// Token: 0x170000A1 RID: 161
// (get) Token: 0x06000622 RID: 1570 RVA: 0x000140F8 File Offset: 0x000122F8
public virtual string StackTrace
{
get
{
if (this.stack_trace == null)
{
if (this.trace_ips == null)
{
return null;
}
StackTrace stackTrace = new StackTrace(this, 0, true, true);
StringBuilder stringBuilder = new StringBuilder();
string text = string.Format("{0} {1} ", Environment.NewLine, Locale.GetText("at"));
string text2 = Locale.GetText("");
for (int i = 0; i < stackTrace.FrameCount; i++)
{
StackFrame frame = stackTrace.GetFrame(i);
if (i == 0)
{
stringBuilder.AppendFormat(" {0} ", Locale.GetText("at"));
}
else
{
stringBuilder.Append(text);
}
if (frame.GetMethod() == null)
{
string internalMethodName = frame.GetInternalMethodName();
if (internalMethodName != null)
{
stringBuilder.Append(internalMethodName);
}
else
{
stringBuilder.AppendFormat("<0x{0:x5}> {1}", frame.GetNativeOffset(), text2);
}
}
else
{
this.GetFullNameForStackTrace(stringBuilder, frame.GetMethod());
if (frame.GetILOffset() == -1)
{
stringBuilder.AppendFormat(" <0x{0:x5}> ", frame.GetNativeOffset());
}
else
{
stringBuilder.AppendFormat(" [0x{0:x5}] ", frame.GetILOffset());
}
stringBuilder.AppendFormat("in {0}:{1} ", frame.GetSecureFileName(), frame.GetFileLineNumber());
}
}
this.stack_trace = stringBuilder.ToString();
}
return this.stack_trace;
}
}
/// Gets the method that throws the current exception.
/// The that threw the current exception.
/// 2
///
///
///
///
// Token: 0x170000A2 RID: 162
// (get) Token: 0x06000623 RID: 1571 RVA: 0x0001426C File Offset: 0x0001246C
public MethodBase TargetSite
{
get
{
StackTrace stackTrace = new StackTrace(this, true);
if (stackTrace.FrameCount > 0)
{
return stackTrace.GetFrame(0).GetMethod();
}
return null;
}
}
/// Gets a collection of key/value pairs that provide additional user-defined information about the exception.
/// An object that implements the interface and contains a collection of user-defined key/value pairs. The default is an empty collection.
/// 2
// Token: 0x170000A3 RID: 163
// (get) Token: 0x06000624 RID: 1572 RVA: 0x0001429C File Offset: 0x0001249C
public virtual IDictionary Data
{
get
{
if (this._data == null)
{
this._data = new Hashtable();
}
return this._data;
}
}
/// When overridden in a derived class, returns the that is the root cause of one or more subsequent exceptions.
/// The first exception thrown in a chain of exceptions. If the property of the current exception is a null reference (Nothing in Visual Basic), this property returns the current exception.
/// 2
// Token: 0x06000625 RID: 1573 RVA: 0x000142BC File Offset: 0x000124BC
public virtual Exception GetBaseException()
{
for (Exception innerException = this.inner_exception; innerException != null; innerException = innerException.InnerException)
{
if (innerException.InnerException == null)
{
return innerException;
}
}
return this;
}
/// When overridden in a derived class, sets the with information about the exception.
/// The that holds the serialized object data about the exception being thrown.
/// The that contains contextual information about the source or destination.
/// The parameter is a null reference (Nothing in Visual Basic).
/// 2
///
///
///
///
// Token: 0x06000626 RID: 1574 RVA: 0x000142F8 File Offset: 0x000124F8
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
if (info == null)
{
throw new ArgumentNullException("info");
}
info.AddValue("ClassName", this.ClassName);
info.AddValue("Message", this.message);
info.AddValue("InnerException", this.inner_exception);
info.AddValue("HelpURL", this.help_link);
info.AddValue("StackTraceString", this.StackTrace);
info.AddValue("RemoteStackTraceString", this._remoteStackTraceString);
info.AddValue("RemoteStackIndex", this.remote_stack_index);
info.AddValue("HResult", this.hresult);
info.AddValue("Source", this.Source);
info.AddValue("ExceptionMethod", null);
info.AddValue("Data", this._data, typeof(IDictionary));
}
/// Creates and returns a string representation of the current exception.
/// A string representation of the current exception.
/// 1
///
///
///
// Token: 0x06000627 RID: 1575 RVA: 0x000143D8 File Offset: 0x000125D8
public override string ToString()
{
StringBuilder stringBuilder = new StringBuilder(this.ClassName);
stringBuilder.Append(": ").Append(this.Message);
if (this._remoteStackTraceString != null)
{
stringBuilder.Append(this._remoteStackTraceString);
}
if (this.inner_exception != null)
{
stringBuilder.Append(" ---> ").Append(this.inner_exception.ToString());
stringBuilder.Append(Environment.NewLine);
stringBuilder.Append(Locale.GetText(" --- End of inner exception stack trace ---"));
}
if (this.StackTrace != null)
{
stringBuilder.Append(Environment.NewLine).Append(this.StackTrace);
}
return stringBuilder.ToString();
}
// Token: 0x06000628 RID: 1576 RVA: 0x0001448C File Offset: 0x0001268C
internal Exception FixRemotingException()
{
string text = ((this.remote_stack_index != 0) ? Locale.GetText("{1}{0}{0}Exception rethrown at [{2}]: {0}") : Locale.GetText("{0}{0}Server stack trace: {0}{1}{0}{0}Exception rethrown at [{2}]: {0}"));
string text2 = string.Format(text, Environment.NewLine, this.StackTrace, this.remote_stack_index);
this._remoteStackTraceString = text2;
this.remote_stack_index++;
this.stack_trace = null;
return this;
}
// Token: 0x06000629 RID: 1577 RVA: 0x000144F8 File Offset: 0x000126F8
internal void GetFullNameForStackTrace(StringBuilder sb, MethodBase mi)
{
ParameterInfo[] parameters = mi.GetParameters();
sb.Append(mi.DeclaringType.ToString());
sb.Append(".");
sb.Append(mi.Name);
if (mi.IsGenericMethod)
{
Type[] genericArguments = mi.GetGenericArguments();
sb.Append("[");
for (int i = 0; i < genericArguments.Length; i++)
{
if (i > 0)
{
sb.Append(",");
}
sb.Append(genericArguments[i].Name);
}
sb.Append("]");
}
sb.Append(" (");
for (int j = 0; j < parameters.Length; j++)
{
if (j > 0)
{
sb.Append(", ");
}
Type parameterType = parameters[j].ParameterType;
if (parameterType.IsClass && parameterType.Namespace != string.Empty)
{
sb.Append(parameterType.Namespace);
sb.Append(".");
}
sb.Append(parameterType.Name);
if (parameters[j].Name != null)
{
sb.Append(" ");
sb.Append(parameters[j].Name);
}
}
sb.Append(")");
}
/// Gets the runtime type of the current instance.
/// A object that represents the exact runtime type of the current instance.
/// 2
// Token: 0x0600062A RID: 1578 RVA: 0x00014654 File Offset: 0x00012854
public new Type GetType()
{
return base.GetType();
}
// Token: 0x04000076 RID: 118
private IntPtr[] trace_ips;
// Token: 0x04000077 RID: 119
private Exception inner_exception;
// Token: 0x04000078 RID: 120
internal string message;
// Token: 0x04000079 RID: 121
private string help_link;
// Token: 0x0400007A RID: 122
private string class_name;
// Token: 0x0400007B RID: 123
private string stack_trace;
// Token: 0x0400007C RID: 124
private string _remoteStackTraceString;
// Token: 0x0400007D RID: 125
private int remote_stack_index;
// Token: 0x0400007E RID: 126
internal int hresult = -2146233088;
// Token: 0x0400007F RID: 127
private string source;
// Token: 0x04000080 RID: 128
private IDictionary _data;
}
}