在我的课堂上,我做到了这一点:
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
",但有自定义异常)。
答案 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...
}