[C#] 自訂例外處理 (Implementing Custom Exceptions)

  • 284
  • 0
  • 2023-06-18

最近在工作中,使用到自訂的例外處理
在這邊做個整理與紀錄

節錄 MSDN官網 說明 

Exception(),使用預設值初始化新例外狀況物件的屬性。
Exception(String),它會使用指定的錯誤訊息初始化新的例外狀況物件。
Exception(String, Exception),它會使用指定的錯誤訊息和內部例外狀況,初始化新的例外狀況物件。

最近學到,在自訂的 Exception 中,一定要 override 這三個建構函式

public class XinyiException : Exception
{
    public XinyiException()
    {
    }

    public XinyiException(string? message) : base(message)
    {
    }

    public XinyiException(string? message, Exception? innerException) : base(message, innerException)
    {
    }
}

預設的 ToString 方法會將 Exception Message 和 Stack Trace 都印出來
如果真的需要客製化,必須 overrider ToString 的話,
記得要加上 base.ToString

public override string ToString()
{
    return $"Something you want to print... {base.ToString()}";
}

 


參考:

[C#] 自訂例外處理 (Exception)

[C#.NET] 使用自訂例外 Exception

Exception 怎麼丟才丟得準

如何建立使用者定義的例外狀況