C# 无法捕获特定的异常
我正在序列化一个XML文件。在序列化过程中,我收到一般异常。很难跟踪问题 我的代码是:C# 无法捕获特定的异常,c#,C#,我正在序列化一个XML文件。在序列化过程中,我收到一般异常。很难跟踪问题 我的代码是: 试一试 { 字符串m_fileName=@“d:\Xml\Person.Xml”; XmlSerializer xmlPerSerlzr=新的XmlSerializer(typeof(person)); txtWrt=newstreamwriter(m_文件名); 序列化(txtWrt,person); } catch(异常serExp) { Show(“异常为:+serExp.Messa
试一试
{
字符串m_fileName=@“d:\Xml\Person.Xml”;
XmlSerializer xmlPerSerlzr=新的XmlSerializer(typeof(person));
txtWrt=newstreamwriter(m_文件名);
序列化(txtWrt,person);
}
catch(异常serExp)
{
Show(“异常为:+serExp.Message.ToString());
}
错误消息: 反映类型“Person”时出错
我的问题是如何强制CLR发出准确的错误?检查异常的类型,例如
serExp.GetType().ToString()
并检查内部异常(类型和消息)
这会给你一些更有用的信息。使用
serExp.StackTrace
而不是
serExp.Message.ToString()
我认为最好同时检查堆栈跟踪和内部异常 你可以用这样的东西
string GetExceptionString(Exception ex)
{
string str = "";
while (ex != null)
{
str += ex.Message + "\n" + ex.StackTrace;
ex = ex.InnerException;
}
return str;
}
在catch子句中设置断点,然后在调试模式下运行。然后,您可以更轻松地浏览异常对象并找出发生的情况。使用:
exc.ToString();
在异常对话框的调试模式中,选择查看详细信息选项。
可能您没有实现0参数构造函数。更好的方法是serExp.ToString(),它在一种情况下实现了上述两种功能,.ToString()不是完全无用的对象类型语句。