将特定异常作为默认值传递

时间:2016-02-03 11:55:27

标签: c# exception-handling

我正在编写一个通用的日志记录应用程序 下一个问题是错误记录。

我要做的是创建一个以异常作为参数的函数。 如果没有提供,我想抛出NotImplementedException

到目前为止我尝试过:

  • 创建静态只读异常对象

    private static readonly NotImplementedException _defaultEx = new NotImplementedException("No exception has been passed to the log method");
    

并尝试将其作为参数传递

    public void LogError(string Message, Queue _queue, Exception Ex = _defaultEx)
  • 并直接将id作为默认参数传递

    public void LogError(string Message, Queue _queue, Exception Ex = new NotImplementedException("No exception has been passed to the log method"))
    

我想避免

    public void LogError(string Message, Queue _queue, Exception Ex = null)

    public void LogError(string Message, Queue _queue, Exception? Ex)

方法

如何在没有在函数中指定它的情况下实现此参数的默认值是硬编码值。我想在它之前声明并分配它。

非常感谢任何帮助。

由于

1 个答案:

答案 0 :(得分:0)

我意识到我的重复不会得到它。

实际上,除了null之外,您不能向reference-type-parameter提供任何默认值。但是,您可以在方法中快速设置它:

public void LogError(string Message, Queue _queue, Exception Ex = null) {
    if (Ex == null) Ex = _defaultException;
    // ...
 }