要抛出的异常而不是NullReferenceException
本文关键字:NullReferenceException 异常 | 更新日期: 2023-09-27 18:18:27
c#代码
void method(int a)
{
int b = get(a);
if ( b == 0 )
{
throw new NullReferenceException();
}
}
如果我抛出NullReferenceException,它将生成一个警告,这不是一个好方法。
所以如果有任何异常而不是NullReferenceException ?我发现了ArgumentNullException,但它不是很适合这个代码,因为b不是一个参数。
正如@AlexeiLevenkov在他的评论中所说,选择异常类型取决于个人选择。然而,这里有一些你应该遵守的准则。例如,不从代码中抛出NullReferenceException
。
MSDN给出了一些非常合理的指导,正如你所期望的。
关于你的实际问题,我会,如果一个自定义的例外是不合适的,可能使用InvalidOperationException
。YMMV .
在这种情况下,如果函数get(a)是确定性的,我建议抛出ArgumentException并说明a的允许范围。
。throw new ArgumentException("参数a必须是....","a");
如果函数get(a)是不确定的(我们不能说什么是可接受的范围),那么ApplicationException与消息说一些关于原因(即。