我在代码中遇到以下情况,最佳管理方式是什么,评论中包含情况,并请推荐最佳实践。方法应该处理空值?在这种情况下的最佳做法?
try
{
string errorMessage = AccountClient.GetAccount(id, out accountDetails);
// FIRST WAY : REMOVE THIS NULL CHECK AT ALL AND LEAVE GetAccountDetails to control
// the Null situation?
if (accountDetails == null)
{
// Second Way: This way? Throw exception here?
throw new ArgumentNullException(nameof(accountDetails));
//Third way? break the function?
break;
}
// GetAccount Details already has null control
Subscription subscription = AccountProcessor.GetAccountDetails(accountDetails);
}
catch (Exception e)
{
throw;
}
如果null不是预期的值,那么就抛出一个异常。如果你所有的假设都被打破了,那么继续是没有意义的。简单地抛出该方法而不抛出可能最终会导致调用堆栈上的其他位置发生错误,从而更难以调试问题的原因。 – sstan
请注意,“break”不会“破坏函数”,它会突破周围的循环。 –
它看起来像'AccountClient.GetAccount'应该抛出一个异常,如果它失败,而不是返回一个错误消息。 – Lee