學習網址:https://docs.microsoft.com/zh-cn/dotnet/standard/exceptions/exception-class-and-properties 瞭解Exception的常見屬性。 Data:Exception的鍵/值對數據。 using System; ...
學習網址:https://docs.microsoft.com/zh-cn/dotnet/standard/exceptions/exception-class-and-properties
瞭解Exception的常見屬性。
Data:Exception的鍵/值對數據。
using System; using System.Collections; namespace ConsoleApp5 { class Program { static void Main(string[] args) { try { NestedRoutine1(true); } catch (Exception e) { // 列印Data if (e.Data.Count > 0) { foreach (DictionaryEntry de in e.Data) Console.WriteLine(" Key: {0,-20} Value: {1}", "'" + de.Key.ToString() + "'", de.Value); } } Console.ReadLine(); } public static void NestedRoutine1(bool displayDetails) { try { NestedRoutine2(displayDetails); } catch (Exception e) { // 給data添加異常信息 e.Data["ExtraInfo"] = "Information from NestedRoutine1."; e.Data.Add("MoreExtraInfo", "More information from NestedRoutine1."); // throw後面不加異常對象,預設是當前異常 throw; } } public static void NestedRoutine2(bool displayDetails) { Exception e = new Exception("This statement is the original exception message."); if (displayDetails) { // 給data添加異常信息 string s = "Information from NestedRoutine2."; int i = -903; DateTime dt = DateTime.Now; e.Data.Add("stringInfo", s); e.Data["IntInfo"] = i; e.Data["DateTimeInfo"] = dt; } throw e; } } }
HelpLink:指向幫助文件的 URL,沒有值就為null。
InnerException:內部異常信息,當前異常可能是其他異常導致的,記錄當前異常的原始異常。
代碼:
using System; using System.Collections; namespace ConsoleApp5 { class Program { static void Main(string[] args) { try { CatchInner(); } catch (AppException e) { Console.WriteLine("外層異常信息: {0}", e.Message); if (e.InnerException != null) Console.WriteLine("Inner exception: {0}", e.InnerException); } Console.ReadLine(); } public static void ThrowInner() { throw new AppException("ThrowInner內部異常信息"); } public static void CatchInner() { try { ThrowInner(); } catch (AppException e) { throw new AppException("CatchInner外部異常信息", e); } } } public class AppException : Exception { public AppException(String message) : base(message) { } public AppException(String message, Exception inner) : base(message, inner) { } } }View Code
結果:
Message 提供有關異常原因的詳細信息。一般是給用戶看的。
Source 獲取或設置導致錯誤的應用程式或對象的名稱,可以自己設置異常的Source,給source豐富一下dll、命名空間、方法等。
StackTrace 錯誤位置的堆棧跟蹤,精確到行。