如何从 C# 中的方法获取 return 值

How to return value from the method in C#

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

错误:

Use of unassigned local variable status.

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

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

因为我只在这个方法中使用这个变量,所以我不想把它暴露在外面,任何人都可以指出下面代码中的问题所在。

这里有两个问题:

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

2) 如果在你的方法中早期抛出异常,你将捕获它然后尝试 return status 而无需为其赋值。

我建议在大多数情况下你根本不想捕获异常——或者如果你想要捕获它(例如为了日志记录),你应该通常然后使用 throw; 让它向上传播。如果您真的非常想捕获异常而不是重新抛出它,则需要计算出您想要 returned 的值。

(我建议不要捕获裸Exception即使你确实想捕获一些异常。你应该几乎总是捕获 特定的 异常。)

老实说,不清楚 returned 值有多大用处 - 调用者正在传递消息,所以对 他们 来说很容易检查它是否为 null 或空...