我知道在StackOverflow上创建了几个类似的主题(例如there和there)。 我有一个众所周知的问题 - 用户未处理的Windows 7 64位Visual Studio中抛出的异常不由IDE调试器处理,因此调试器不会在合适的代码行中中断。因为我不想通过在Tools-> Exceptions ...菜单中启用“投掷”复选框来捕获所有异常,所以我尝试使用Microsoft article solution。
应用MS解决方案导致情况发生了变化,但VS调试器仍然无法正常运行。
目前,当抛出新的异常时,我看到系统内部错误消息,然后VS调试器将在错误行上正确停止但仅在不到一秒的时间内,应用程序退出...
您是否有其他解决方案可以解决此问题?使用所谓的静默异常进行编程非常不舒服......
编辑:我希望,现在我的问题不那么多了......
答案 0 :(得分:1)
在我的情况下,不需要注册表修改。根据{{3}}和Redd的回答,我以这样的方式修改了我的Program.cs文件:
static void Main()
{
try
{
System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException);
System.Windows.Forms.Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(OnGuiUnhandedException);
AppDomain.CurrentDomain.UnhandledException += OnUnhandledException;
var form = new MainForm();
form.ShowDialog();
}
catch (Exception e)
{
HandleUnhandledException(e);
}
finally
{
// Do stuff
}
}
private static void HandleUnhandledException(Object o)
{
// TODO: Log it!
Exception e = o as Exception;
if (e != null)
{
}
}
private static void OnUnhandledException(Object sender, UnhandledExceptionEventArgs e)
{
HandleUnhandledException(e.ExceptionObject);
}
private static void OnGuiUnhandedException(object sender, System.Threading.ThreadExceptionEventArgs e)
{
HandleUnhandledException(e.Exception);
}
现在我的调试器工作正常,因此它在未处理的异常上停止,并且不会停止处理的异常。看起来Microsoft解决了操作系统级别的Windows 7 64位SP1中的静默异常问题,但强制正确的VS工作仍需要一些用户/程序员操作。