C# 获取异常时方法的参数值
是否有一种方法可以知道在抛出异常时传递给方法的是什么<代码>Convert.ToBoolean(字符串mystring)当它抛出FormatException时?C# 获取异常时方法的参数值,c#,exception,reflection,C#,Exception,Reflection,是否有一种方法可以知道在抛出异常时传递给方法的是什么Convert.ToBoolean(字符串mystring)当它抛出FormatException时? 这里我想知道抛出异常时mystring是什么?您必须捕获常规异常(或FormatException)并将值分配给成员。或者使用您的值重新引发新异常 使用 如何添加额外信息 catch (Exception e) { e.Data.Add("ExtraInfo", "More informatio
这里我想知道抛出异常时mystring是什么?您必须捕获常规异常(或FormatException)并将值分配给成员。或者使用您的值重新引发新异常 使用 如何添加额外信息
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);
}
您仍然可以获取catch块内变量的值,只要它是try块上方声明的参数或变量
您必须捕获特定的异常,例如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)的可能情况并防止它们。它们很昂贵,会中断流程。您应该只使用它们。那么你可以说
bool value;
if(!Boolean.TryParse(myString, out value)) {
// it didn't parse
}
// it parsed
注意:您可以将“throw e”替换为“throw”,它在包含新用户数据时仍将保留stacktrace。