c# - 应该抛出异常还是该方法应该简单地返回?
问题描述
我目前想知道如果null
传递给以下方法,什么是“最好的”。它应该静默返回(因为它没有)还是应该抛出异常?
public void RaisePropertyChanged(string propertyName)
{
if(propertyName is null)
{
return;
}
this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
这里说
[I]如果违反了函数对其输入的假设,它应该抛出异常而不是正常返回
并且我相信该函数假定将非null
输入传递给它,但是,它仍然可以执行(成功吗?),因为如果null
传递它它什么也不做。
就良好/干净的代码而言,是抛出异常而不是返回“最好”的事情吗?
解决方案
当缺少属性名称被认为是开发错误时,该方法应该抛出一个ArgumentNullException
. 否则,默默返回就好了。
无论你做什么,更安全一点是测试string.IsNullOrWhiteSpace(propertyName)
. 当您这样做时,只需ArgumentException
在未提供正确名称时抛出一个。
推荐阅读
- javascript - 如何在js中声明具有自定义名称的var?
- c# - GridViewRow 上的条件背景基于 DataGrid 旁边的文本框值
- javascript - 尝试用纯 JavaScript 实现“位置:粘性”的替代方案
- python - 用于网页抓取的 Pandas Dataframe 语法无效
- python - Django admin.py ValueError 尝试保存多对多字段时
- dataframe - AttributeError:“GroupedData”对象没有属性“选择”
- linker - 将 c 图形库与 Windows API 链接的问题
- python - 使用python和sqlite3的字符串更改问题
- javascript - 如果选中将值添加到数组,则反应复选框
- r - R中具有类别和子类别的多个熔体