传递一个变量来捕获块

时间:2012-11-06 20:18:37

标签: c# web-services c#-4.0

基本上我有一个字符串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'

3 个答案:

答案 0 :(得分:8)

要修复错误,请将errorMessage初始化为null,string.Empty或其他一些默认值。这是其中一种情况,其中编译器不够智能,无法确定在使用之前已经分配了它。

答案 1 :(得分: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);
               }
         }
     }
 }

答案 2 :(得分:0)

您需要在字符串中输入初始值。

string errorMessage = "";