Chr*_*ins 0 c# exception try-catch unhandled-exception
try
{
list = from XElement e in d.Descendants(wix + "File")
where e.Attribute("Name").Value.Contains(temp.Name) &&
e.Parent.Parent.Attribute("Name").Value.Contains(temp.Directory.Name)
select e;
}
catch (NullReferenceException e)
{
MessageBox.Show(e.Message);
}
catch (Exception e)
{
MessageBox.Show(e.Message);
}
Run Code Online (Sandbox Code Playgroud)
现在我的问题是为什么这段代码产生运行时错误,说我有一个未处理的NullReferenceException.如果您需要有关该计划的更多信息,请通知我.
编辑:调试器指向linq语句的"where"部分.当我直接从exe文件运行这个程序时,我仍然得到异常.
编辑:好的,我想我知道问题......这是由于延迟查询执行.
如果您刚刚在try/catch块中获得了查询结构,那么就不会捕获在执行查询时发生的异常.
看看你有堆栈跟踪,你会发现,有会在那里你堆栈帧执行查询-它只是它来源于此位的代码自动生成的lambda表达式,它不是在try/catch块的范围内运行.
原始答案:
您是否只是在调试器中看到异常?如果是这样,请进入调试器异常对话框并更改异常导致调试器"中断"的点的首选项.catch块应该NullReferenceException正常处理.(诚然,我不认为你确实应该抓住NullReferenceException摆在首位,并捕获所有异常一样,通常是一个坏主意也比在堆栈的顶部以外-但是这是一个不同的问题.)
| 归档时间: |
|
| 查看次数: |
3113 次 |
| 最近记录: |