mil*_*lie 7 c# parameters exception
我记得读过一些异常处理指南,建议不要检查空参数.这样做的理由是,如果您按原样保留代码,则在尝试使用该参数时会引发异常(NullReferenceExcpetion).另一种方法是显式检查null并抛出ArgumentNullException.
这给出了相同的效果,但你是正确的额外代码行.您不会编写代码来处理任何异常,因此您在测试时会在运行时遇到这些问题,然后修复代码以阻止异常发生.
我不是说我同意这个指导,但是当我第一次阅读它时它确实有意义,现在仍然有意义.
我通常只检查非私有方法的空参数,但保留私有方法抛出NullReferenceException.
有没有人知道是否有任何明确/事实上的最佳指导实践,所以如果需要我可以更新我的方法?
Jon*_*eet 11
这给出了相同的效果,但你是正确的额外代码行
不,不.考虑:
public void TransferMoney(Account from, Account to, decimal amount)
{
from.Debit(amount);
to.Credit(amount);
}
Run Code Online (Sandbox Code Playgroud)
VS
public void TransferMoney(Account from, Account to, decimal amount)
{
// Ideally do them separately
if (from == null || to == null)
{
throw new ArgumentNullException();
}
from.Debit(amount);
to.Credit(amount);
}
Run Code Online (Sandbox Code Playgroud)
两者都会因例外而失败 - 但第一个会因为首先引起副作用而失败.这很糟糕,应尽可能避免.
(显然,在一个真实的情况下,这可能是交易性的,并且没有真正的伤害,但你明白我的意思.)
此外,如果一个参数被用作另一个方法的参数 - 或者更糟糕的是,存储以供以后使用 - 你可以最终从一个完全不同的地方抛出异常,这可能会使它完全不明显原来的问题是.
我通常只检查非私有方法的空参数,但保留私有方法抛出NullReferenceException.
这似乎是一个相当合理的政策.如果从一些毛茸茸的代码调用私有/内部方法,我担心我可能搞砸了,我有时甚至会验证它.
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |