这可能是一个小问题,但我不明白为什么会抛出错误。
使用未分配的本地变量状态。
public static bool HandleError(int eventId, int transactionId, DateTime timestamp, int userId, string message)
{
static bool status;
ErrorMessage objHandleError = new ErrorMessage();
try
{
objHandleError.EventId = eventId;
objHandleError.TransactionId = transactionId;
objHandleError.Timestamp = timestamp;
objHandleError.UserId = userId;
objHandleError.Message = message;
if (string.IsNullOrEmpty(objHandleError.Message))
{
status = false;
}
else
status = true;
// Places the recived object on the service bus
MessageBroadcastHelper.Send("ErrorMessage", objHandleError);
}
catch (Exception ex)
{
//To Do : if any exception we may write this exception to the event log.
objHandleError.Exception = ex.ToString();
//string ExceptionString = SerializeException(ex);
}
return status;
}
如果我在类级别声明状态变量,它不会抛出任何异常,如果我在类之外声明状态变量我没有收到任何错误。
由于我只在这个方法中使用这个变量,我不想将它暴露出来,任何人都可以指出我在下面的代码中出现了什么问题。
答案 0 :(得分:3)
这里有两个问题:
1)您已将局部变量声明为静态。那是无效的。
2)如果您的方法提前发生异常,则会抓住该异常,然后尝试返回throw;
,而不会为其分配值。
我建议大多数情况下你根本不想捕捉异常 - 或者如果你想要抓住它(例如用于记录),你通常应该使用Exception
让它传播起来。如果你确实想要捕获异常而不是重新抛出异常,那么你需要计算出你想要返回的值。
(即使您确实希望捕获某些例外,我也 建议不要删除IndexError
。您应该几乎总是抓住< em>特定的例外。)
说实话,目前还不清楚返回值的使用量是多少 - 调用者正在传递消息,因此他们可以轻松检查无论是空还是空......