有没有办法知道抛出异常时传递给方法的内容。 Convert.ToBoolean(string mystring)
什么时候抛出FormatException?
在这里,我想知道抛出异常时mystring是什么?
答案 0 :(得分:2)
您必须捕获常规异常(或FormatException)并将值分配给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