Csharp/C Sharp by API/System/Exception
Exception.HelpLink
<source lang="csharp"> using System;
class MainClass {
public static void Main() { try { int[] nums = new int[4]; Console.WriteLine("Before exception is generated."); // Generate an index out-of-bounds exception. for(int i=0; i < 10; i++) { nums[i] = i; } } catch (IndexOutOfRangeException exc) { Console.WriteLine("Standard message is: "); Console.WriteLine(exc); // calls ToString() Console.WriteLine("Stack trace: " + exc.StackTrace); Console.WriteLine("Message: " + exc.Message); Console.WriteLine("TargetSite: " + exc.TargetSite); Console.WriteLine("Class defining member: {0}", exc.TargetSite.DeclaringType); Console.WriteLine("Member type: {0}", exc.TargetSite.MemberType); Console.WriteLine("Source: {0}", exc.Source); Console.WriteLine("Help Link: {0}", exc.HelpLink); } Console.WriteLine("After catch statement."); }
}
</source>
Exception.Source
<source lang="csharp"> using System;
class MainClass {
public static void Main() { try { int[] nums = new int[4]; Console.WriteLine("Before exception is generated."); // Generate an index out-of-bounds exception. for(int i=0; i < 10; i++) { nums[i] = i; } } catch (IndexOutOfRangeException exc) { Console.WriteLine("Standard message is: "); Console.WriteLine(exc); // calls ToString() Console.WriteLine("Stack trace: " + exc.StackTrace); Console.WriteLine("Message: " + exc.Message); Console.WriteLine("TargetSite: " + exc.TargetSite); Console.WriteLine("Class defining member: {0}", exc.TargetSite.DeclaringType); Console.WriteLine("Member type: {0}", exc.TargetSite.MemberType); Console.WriteLine("Source: {0}", exc.Source); Console.WriteLine("Help Link: {0}", exc.HelpLink); } Console.WriteLine("After catch statement."); }
}
</source>
Exception.TargetSite
<source lang="csharp"> using System;
class MainClass {
public static void Main() { try { int[] nums = new int[4]; Console.WriteLine("Before exception is generated."); // Generate an index out-of-bounds exception. for(int i=0; i < 10; i++) { nums[i] = i; } } catch (IndexOutOfRangeException exc) { Console.WriteLine("Standard message is: "); Console.WriteLine(exc); // calls ToString() Console.WriteLine("Stack trace: " + exc.StackTrace); Console.WriteLine("Message: " + exc.Message); Console.WriteLine("TargetSite: " + exc.TargetSite); Console.WriteLine("Class defining member: {0}", exc.TargetSite.DeclaringType); Console.WriteLine("Member type: {0}", exc.TargetSite.MemberType); Console.WriteLine("Source: {0}", exc.Source); Console.WriteLine("Help Link: {0}", exc.HelpLink); } Console.WriteLine("After catch statement."); }
}
</source>
extends Exception
<source lang="csharp">
using System; using System.Runtime.Serialization; [Serializable] public sealed class MyException : Exception {
private string stringInfo; private bool booleanInfo; public MyException() : base() { } public MyException(string message) : base(message) { } public MyException(string message, Exception inner): base(message, inner) { } private MyException(SerializationInfo info, StreamingContext context) : base(info, context) { stringInfo = info.GetString("StringInfo"); booleanInfo = info.GetBoolean("BooleanInfo"); } public MyException(string message, string stringInfo, bool booleanInfo) : this(message) { this.stringInfo = stringInfo; this.booleanInfo = booleanInfo; } public MyException(string message, Exception inner, string stringInfo, bool booleanInfo): this(message, inner) { this.stringInfo = stringInfo; this.booleanInfo = booleanInfo; } public string StringInfo { get { return stringInfo; } } public bool BooleanInfo { get { return booleanInfo; } } public override void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue("StringInfo", stringInfo); info.AddValue("BooleanInfo", booleanInfo); base.GetObjectData(info, context); } public override string Message { get { string message = base.Message; if (stringInfo != null) { message += Environment.NewLine + stringInfo + " = " + booleanInfo; } return message; } }
} public class MainClass {
public static void Main() { try { throw new MyException("Some error", "SomeCustomMessage", true); } catch (MyException ex) { Console.WriteLine(ex.Message); Console.WriteLine(ex.BooleanInfo); Console.WriteLine(ex.StringInfo); } }
}
</source>