如果value为null,则自动引发异常

时间:2017-12-16 14:51:35

标签: c#

在我的课堂上,我做到了这一点:

private void RaiseExceptionIfNull(object o, string error)
{
    if (o == null) {
        throw new System.NullReferenceException(error + " is null " +
                                                "(should never be null)");
    }
}

然后在我的所有方法中,我都在做这样的事情:

RaiseExceptionIfNull(cbAjaxFinished, "Callback Ajax Finished");
RaiseExceptionIfNull(j, "Result conversion");

...所有这一切,因为如果一行中的值为null(使用干净代码),我想引发异常。

我想知道是否已经有办法像我一样提出异常,但是在C#(我是这个领域的新手)(有点" assert() in C",但有自定义异常)。

1 个答案:

答案 0 :(得分:1)

在您的情况下,我会抛出ArgumentNullException而不是使用NullReferenceException,因为您正在检查参数是否无效,因为它是null。使用扩展方法,您可以非常轻松地进行单行检查:

// value types should be excluded as they can't be null
// hence the "where T : class" clause
internal static void ThrowIfNull<T>(this T obj, String parameterName) where T : class
{
    if (obj == null)
        throw new ArgumentNullException(parameterName);
}

然后,在您的方法中使用扩展名如下:

public void MyFunc(Object obj)
{
    obj.ThrowIfNull(nameof(obj));

    // Your implementation...
}