获取异常方法的参数值

时间:2011-07-22 01:51:07

标签: c# exception reflection

有没有办法知道抛出异常时传递给方法的内容。 Convert.ToBoolean(string mystring)什么时候抛出FormatException? 在这里,我想知道抛出异常时mystring是什么?

3 个答案:

答案 0 :(得分:2)

您必须捕获常规异常(或FormatException)并将值分配给Exception.Data成员。或者使用您的值重新抛出新异常。

使用Exception.Data

如何添加额外信息

catch (Exception e)
            {
            e.Data.Add("ExtraInfo", "More information.");
            throw e;
            }

如何抓住

 catch (Exception e)
            {
            if (e.Data != null)
                {
            foreach (DictionaryEntry de in e.Data)
                    Console.WriteLine("    The key is '{0}' and the value is: {1}", 
                                                    de.Key, de.Value);                  
                }
            }

//或者只是用你的字符串重新抛出一个新的异常......

catch (Exception ex)
{     
     throw new Exception("My string was" + yourString);
}

答案 1 :(得分:2)

只要在try块上面声明了参数或变量,你仍然可以获得catch块中变量的值。
您必须捕获特定的异常,例如argumentnullexception / formatexception或在try / catch块中的方法中包装单个操作,以了解抛出异常的上下文。

void Method(int i, string j)
{
    bool p;

    try
    {

    }
    catch(FormatException e)
    {
      //value of i, j, p are available here.
    }
}

理想的方法是检查抛出异常(例如formatexceptions)并阻止它们的可能情况。它们很昂贵并且会中断流程。

答案 2 :(得分:0)

应该只使用Boolean.TryParse。然后你可以说

bool value;
if(!Boolean.TryParse(myString, out value)) {
    // it didn't parse
}
// it parsed