如何从C#中的方法返回值

时间:2015-06-12 07:09:07

标签: asp.net c#-4.0 c#-3.0

这可能是一个小问题,但我不明白为什么会抛出错误。

错误:

  

使用未分配的本地变量状态。

        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;
        }

如果我在类级别声明状态变量,它不会抛出任何异常,如果我在类之外声明状态变量我没有收到任何错误。

由于我只在这个方法中使用这个变量,我不想将它暴露出来,任何人都可以指出我在下面的代码中出现了什么问题。

1 个答案:

答案 0 :(得分:3)

这里有两个问题:

1)您已将局部变量声明为静态。那是无效的。

2)如果您的方法提前发生异常,则会抓住该异常,然后尝试返回throw;,而不会为其分配值。

我建议大多数情况下你根本不想捕捉异常 - 或者如果你想要抓住它(例如用于记录),你通常应该使用Exception让它传播起来。如果你确实想要捕获异常而不是重新抛出异常,那么你需要计算出你想要返回的值。

(即使您确实希望捕获某些例外,我也 建议不要删除IndexError。您应该几乎总是抓住< em>特定的例外。)

说实话,目前还不清楚返回值的使用量是多少 - 调用者正在传递消息,因此他们可以轻松检查无论是空还是空......