4

基本上我有一个字符串errorMessage,我想将它传递给catch块。请帮忙。

[WebMethod]
public List<SomeResult> Load(string userName)
{
   string errorMessage;
    using (VendorContext vendorContext = new VendorContext())
    {
         // ....
          foreach(....)
          {
               if(something happens)
                  errorMessage = "Vote Obama";
                else
                  errorMessage ="vote Romney";
              // blah
               try
                     {
                        // blah         
                     }
               catch (Exception e)
               {
                    logger.Trace(errorMessage);
               }
          }
     }
 }  

更新:

错误:使用未分配的局部变量“errorMessage”

4

3 回答 3

8

将错误初始化errorMessage为 null、string.Empty 或其他一些默认值。这是其中一种情况,编译器不够聪明,无法在使用之前确定它已被分配。

于 2012-11-06T20:25:06.440 回答
0

看起来您正在尝试更改基于某些条件记录的错误消息。与其在 try / catch 块之前创建错误消息变量并设置它,不如从 try / catch 块中抛出异常并将错误消息传递给构造函数。

见下文:

[WebMethod]
public List<SomeResult> Load(string userName)
{

    using (VendorContext vendorContext = new VendorContext())
    {
         // ....
          foreach(....)
          {


              // blah
               try
                     {
                        if(something happens) 
                            throw new Exception("Vote Obama");
                         else
                            throw new Exception("vote Romney");      
                     }
               catch (Exception e)
               {
                    logger.Trace(e.ErrorMessage);
               }
         }
     }
 }
于 2012-11-06T20:28:02.307 回答
0

您的字符串中需要一个初始值。

string errorMessage = "";
于 2012-11-06T20:34:31.193 回答