【发布时间】:2016-08-31 18:09:09
【问题描述】:
我尝试在这段代码中捕获异常:
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;
}
}
XmlException 发生在 doc.Load(stream) 的 try 块中,但没有捕获。我发现存在一些无法以常规方式捕获的异常类型。 XmlException 不是这种类型的异常。无论如何,我尝试使用 [HandleProcessCorruptedStateExceptions] 属性,但这无济于事。我怎样才能捕捉到这个异常? Stack Trace。有什么建议我都会采纳的
【问题讨论】:
-
您如何知道发生了 XMLException?
-
您确定异常是从
try内部引发的,而不是在其他位置吗?你能发布堆栈跟踪吗? -
我不能 100% 确定它是否重复(因为根本原因可能不同),但这个答案似乎非常有用:stackoverflow.com/a/1405510/328193
-
他正在使用将
doc.Load(stream)放在块内,所以这似乎不是问题 -
我没有给你答案,但
catch (Exception e)被认为是不好的做法。你应该缩小你的 catch 块的范围(在你弄清楚它为什么不适合你之后)。见stackoverflow.com/a/3866567/211627