gpt4 book ai didi

c# - .NET 程序在什么情况下会终止?

转载 作者:行者123 更新时间:2023-11-30 19:17:12 24 4
gpt4 key购买 nike

我有一个为 .NET 4 Full Framework 编写的 WPF 应用程序。该应用程序使用 SQL Anywhere 作为其数据库。我的应用程序有一个未处理的异常处理程序,它总是将错误记录到程序的自定义事件日志中。然后它向用户显示错误消息。该程序还会在要执行某些操作时向事件日志发送消息,以便更轻松地进行调试。

该应用程序安装在用户的膝上型电脑上,该膝上型电脑运行 Windows 7 并具有 8 GB 的 RAM。当它在 native 上启动时,会显示初始屏幕,然后显示程序的主窗口。绘制后不到一秒钟,程序就死了。没有显示任何错误消息。

检查事件日志显示该程序写入的最后一条消息是它正在检查数据库中是否存在用户。没有错误消息。

显示的最后一条消息后面的代码是对执行某些参数检查然后执行以下 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 block 中的代码是否被调用过。我怀疑它正在被调用并且其中发生了异常。

我的问题是,如果在catch block 中发生异常,如果没有其他异常处理程序来捕获该错误,那么该异常是否会被上层的Unhandled Exception 处理程序捕获?或者它会导致程序死掉而不报告任何东西吗?

最佳答案

My question is, if an exception occurs in a catch block, won't that exception be caught by the Unhandled Exception handler at the upper level, if there is no other exception handler to catch the error? Or would it cause the program to die without reporting anything?

异常会向上传播,应该被未处理的异常处理程序捕获。

也就是说,有些异常不会被捕获,例如StackOverflowException。也有可能异常 block 中的代码(或数据库提供程序......?)以一种不会终止的方式终止进程(即:调用 Environment.Exit 或同样糟糕的事情)允许异常处理工作。

关于c# - .NET 程序在什么情况下会终止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19059949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com