我有一个为.NET 4 Full Framework编写的WPF应用程序。该应用程序使用SQL Anywhere作为其数据库。我的应用程序有一个未处理的异常处理程序,它总是将错误记录到程序的自定义事件日志中。然后它将错误消息显示给用户。该程序还会在事件日志中发送消息,以便随时进行调试。.NET程序在什么情况下会终止?
该应用程序安装在运行Windows 7并具有8 GB RAM的用户笔记本电脑上。在本机上启动时,将显示启动画面,然后显示程序的主窗口。在绘制完成后不到一秒钟,程序就会消失。没有显示错误消息。
检查事件日志显示程序写的最后一条消息是它正在检查数据库中是否存在用户。没有错误消息。
下面显示的最后一条消息的代码是,做一些参数检查方法的调用,然后执行以下EF查询:
LPRCore.CarSystem.User user = null;
IQueryable<User> query = from u in context.Users
from m in context.Members.Where(m => m.UserId == u.UserId)
.DefaultIfEmpty()
where u.LoweredUserName == userName.ToLower() && m == null
select u;
try {
user = query.SingleOrDefault();
} catch (Exception ex) {
....
}
我不能告诉,如果在代码catch块被称为。我的怀疑是它被召唤了,并且在那里发生了异常。
我的问题是,如果在catch块中发生异常,那么如果没有其他异常处理程序来捕获错误,上层的未处理异常处理程序是否会捕获该异常?或者它会导致程序死亡而不报告任何内容?
运行连接(远程)调试器时会发生什么? – 2013-09-27 21:04:00
我们还通过添加Application.ThreadException + = OnApplicationThreadException和未处理的处理程序来捕获更多。 –
即时通讯假设你也想深究这个问题的底部。首先您可以检查客户端PC上的事件查看器。如果没有“好的”异常或消息,那么当应用程序退出时,您将不得不拔出Windbg并获取转储。 – wal