首页 > 解决方案 > 应该抛出异常还是该方法应该简单地返回?

问题描述

我目前想知道如果null传递给以下方法,什么是“最好的”。它应该静默返回(因为它没有)还是应该抛出异常?

public void RaisePropertyChanged(string propertyName)
{
    if(propertyName is null)
    {
        return;
    }

    this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

}

这里

[I]如果违反了函数对其输入的假设,它应该抛出异常而不是正常返回

并且我相信该函数假定将非null输入传递给它,但是,它仍然可以执行(成功吗?),因为如果null传递它它什么也不做。


就良好/干净的代码而言,是抛出异常而不是返回“最好”的事情吗?

标签: c#exceptionpreconditions

解决方案


当缺少属性名称被认为是开发错误时,该方法应该抛出一个ArgumentNullException. 否则,默默返回就好了。

无论你做什么,更安全一点是测试string.IsNullOrWhiteSpace(propertyName). 当您这样做时,只需ArgumentException在未提供正确名称时抛出一个。


推荐阅读