Sé que siempre debe verificar params entrantes a un método para null. Pero, ¿qué sucede si tengo este escenario con un try/catch que hace referencia a una variable local? ¿Realmente necesito verificar null a continuación? Debido a que va a la captura de todos modos si es nula y la siguiente línea de código intenta utilizar la variable refundResponse:Si se comprueba nulo
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();
}
}
Recuerda que estoy hablando específicamente de las variables locales y la comprobación de los dentro de un método, no params entrantes a una método.
Todo lo que estoy preguntando es si necesito comprobar null antes de configurar refundTransactionID o simplemente lo configuro sin el si suponiendo que el compilador manejará y arrojará si es nulo que será capturado y devuelto como una cadena para la persona que llama en este caso.
o debe ser
if (refundResponse == null)
return null;
o simplemente tomar el cheque completo para esta asignación variable local y, a continuación, ya que en este caso tengo un try/catch estoy manejando cualquier excepción recogido por el compilador de forma natural mediante la devolución de la excepción como una cadena a la persona que llama (no fue mi decisión de enviar de regreso una cadena, que era un requisito de mi jefe ... por lo que el debate de derivación por ahora):
refundTransactionID = refundResponse.RefundTransactionID;
en última instancia, la el resto del código más abajo en el método depende de n un reembolso válidoTransactionID.
Coger todas las excepciones y devolver la respuesta como una cadena me parece una práctica de programación muy extraña y probablemente no muy buena en general. Hay algunos casos en los que desea detectar todos los errores, los despachadores de servicios web vienen a la mente, pero la lógica empresarial como esta no parece ser el lugar. –
este es un método de servicio web .. – PositiveGuy
Devolver la cadena depende de cómo se utilizará el servicio web. ¿Cómo puedes decir que no devuelves el error como una cadena? ¿Qué devolverías entonces? No veo nada útil para devolver que no sea el mensaje de error. – PositiveGuy