Pos*_*Guy 11 c# error-handling
我知道你应该总是检查传入的params到null的方法.但是,如果我有一个try/catch引用局部变量的情况怎么办?我真的需要在下面检查空吗?因为无论如何它都会捕获它,如果它为null并且下一行代码试图使用refundResponse变量:
public string DoRefund(...)
{
try
{
......
string refundTransactionID = string.Empty;
......
RefundTransactionResponseType refundResponse = transaction.DoRefund(...);
if (refundResponse != null)
refundTransactionID = refundResponse.RefundTransactionID;
.....
}
catch (Exception ex)
{
LogError(ex);
return ex.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,我正在专门讨论局部变量并检查方法中的那些变量,而不是方法的传入参数.
我在这里要求的是我在设置refundTransactionID之前是否需要检查null,或者我只是设置它而不假设编译器将处理并抛出如果它为null将被捕获并作为字符串返回到在这种情况下打电话.
或应该是
if (refundResponse == null)
return null;
Run Code Online (Sandbox Code Playgroud)
或者只是完全检查这个局部变量赋值,然后在这种情况下,我有一个try/catch我正在处理编译器选择的任何异常,通过将异常作为字符串返回给调用者(它不是我决定寄回一个字符串,这是我老板的要求......所以现在绕过那个辩论):
refundTransactionID = refundResponse.RefundTransactionID;
Run Code Online (Sandbox Code Playgroud)
最终,该方法中的其他代码依赖于有效的refundTransactionID.
我知道你应该总是检查传入的params到null的方法.
不,不一定.您应该指定的是您的方法的合同.指定您将为null参数抛出NullPointer/NullReferenceException是完全可以接受的(也是常见的).那你就不需要任何检查了.
您也可以检查null,但这只有在您实际可以有效处理空值时才有意义(例如,替换默认值).
| 归档时间: |
|
| 查看次数: |
537 次 |
| 最近记录: |