Try/Catch不';t捕获异常c#

Try/Catch不';t捕获异常c#,c#,wpf,exception,C#,Wpf,Exception,我已尝试在此代码中捕获异常: public Source(String source) /// Constructor { _dialogs = new ThreadSafeList<Int64>(); _source = source; try { var request = WebRequest.Create(_source); var stream =

我已尝试在此代码中捕获异常:

    public Source(String source) /// Constructor
    {
        _dialogs = new ThreadSafeList<Int64>();
        _source = source;
        try
        {
            var request = WebRequest.Create(_source);
            var stream = request.GetResponse().GetResponseStream();
            XmlDocument doc = new XmlDocument();
            doc.Load(stream);

            _oldNews = doc.SelectNodes("/rss/channel/item").Cast<XmlNode>();
            IsValid = true;
        }
        catch (Exception e)
        {
            Logger.Log("Source read error " + source + ", more: " + e.Message);
            IsValid = false;
        }
    }
公共源代码(字符串源代码)///构造函数
{
_dialogs=newthreadsafelist();
_来源=来源;
尝试
{
var request=WebRequest.Create(_source);
var stream=request.GetResponse().GetResponseStream();
XmlDocument doc=新的XmlDocument();
单据加载(流);
_oldNews=doc.SelectNodes(“/rss/channel/item”).Cast();
IsValid=true;
}
捕获(例外e)
{
Logger.Log(“源读取错误”+Source+”,更多信息:+e.Message);
IsValid=false;
}
}
XmlException发生在doc.Load(流)的try块中,但未捕获。我发现存在一些无法以常规方式捕获的异常类型。XmlException不是这种类型的异常。无论如何,我尝试了使用[HandleProcessCorruptedStateExceptions]属性,但没有任何帮助。如何捕获此异常。我将听取任何建议

C#中的所有异常都源自System.exception。因此,使用您的代码进行try-and-catch时,不可能不捕获XmlException

假设: a) 您试图捕获的异常发生在其他地方,就像其他模块中的重复代码一样

b) 如果您想显式捕获XMLException,下面的代码将有所帮助

public static void Source(String source) /// Constructor
{
    try
    {
        var request = WebRequest.Create(source);
        var stream = request.GetResponse().GetResponseStream();         
        XmlDocument doc = new XmlDocument();
        doc.Load(stream);
    }
    catch(XmlException e) 
    {
       Console.WriteLine("XmlException Caught");
       Console.WriteLine(e.Message);
       Console.WriteLine("Exception object Line, pos: (" + e.LineNumber + "," + e.LinePosition  + ")");
    }       
    catch (Exception ex)
    {
        Console.WriteLine("Exception Caught");
        Console.WriteLine(ex.Message);
    }
}

您如何知道XMLException正在发生?您确定异常是从
try
内部引发的,而不是在其他位置引发的吗?你能发布堆栈跟踪吗?我不能100%确定它是否是重复的(因为根本原因可能不同),但这个答案似乎非常有用:他正在使用将
doc.Load(stream)
放在块内,所以这似乎不是问题我没有答案,但是
catch(异常e)
被认为是不良做法。你应该缩小捕捉块的范围(在你弄清楚为什么它不适合你之后)。你有错误的快照吗?或者任何确保异常确实发生的事情。我相信这会很有帮助。