无法捕获特定的异常

时间:2009-08-17 06:06:57

标签: c#

我正在序列化一个XML文件。在序列化过程中,我收到一般异常。很难追查这个问题。

我的代码是:



{
 string m_fileName = @“d:\ Xml \ Person.xml”;
XmlSerializer xmlPerSerlzr = new XmlSerializer(typeof(person));
txtWrt = new StreamWriter(m_fileName);

xmlPerSerlzr.Serialize(txtWrt,person);
}
catch(异常serExp)
     {
        MessageBox.Show(“Exception is:”+ serExp.Message.ToString());
     }


错误讯息:

有一个错误反映了类型“人”

<小时/>

我的问题是如何强制CLR发出确切的错误?

5 个答案:

答案 0 :(得分:1)

检查例外的类型,例如

serExp.GetType().ToString()

并检查内部异常(类型和消息)。

这应该会给你一些更有用的信息。

答案 1 :(得分:1)

使用:

exc.ToString();

在Exception DialogBox的调试模式下,选择查看详细信息选项。 可能你没有实现0参数构造函数。

答案 2 :(得分:0)

使用

serExp.StackTrace

而不是

serExp.Message.ToString()

答案 3 :(得分:0)

我认为最好还要检查堆栈跟踪和内部异常。

你可以使用类似的东西

    string GetExceptionString(Exception ex)
    {
        string str = "";
        while (ex != null)
        {
            str += ex.Message + "\n" + ex.StackTrace;
            ex = ex.InnerException;
        }
        return str;
    }

答案 4 :(得分:0)

在catch子句中设置断点,然后在调试模式下运行。然后,您可以更轻松地探索异常对象并找出正在发生的事情。