public void PublicMethod(FooBar fooBar)
{
if (fooBar == null)
throw new ArgumentNullException("fooBar", "fooBar cannot be null");
// log the call [added: Thanks S.Lott]
_logger.Log("PublicMethod called with fooBar class " + fooBar.Classification);
int action = DetermineAction();
PrivateMethod(fooBar, action);
}
private void PrivateMethod(FooBar fooBar, int action)
{
if (fooBar == null)
throw new ArgumentNullException("fooBar", "fooBar cannot be null"); // Is this line superfluous?
/*
Do something
*/
}
如果已经在公共接口上检查了输入,是否可以在私有方法中跳过这种错误检查?通常有一些经验法则可以通过......
编辑:
也许 ArgumentNullException 不是一个很好的例子,因为可以使您应该在两个级别都检查但返回不同的错误消息的参数。