昨天写了一个程序,在主窗口启动时,在OnLoad事件中加载配置文件中的配置,由于解析配置文件的函数没有写好,启动后无法正确获取配置。在Debug的时候却发现VisualStudio无法捕获解析配置文件时抛出的异常,导致无法直接定位到出错的地方。
由于我的配置文件并不复杂,解决配置文件解析函数的问题并没法费多大劲,但总感觉有点不爽,便Google了一下,看是否有人遇到同样的情况。结果发现,这个原来是VisualStudio的一个老Bug,MSDN上还专门有篇文章介绍这个问题:Visual Studio debugger fails to catch unhandled exception for a Windows Form or WPF Application?
简单来说,这个就是VisualStudio的一个Bug,在Form_Load回调中不能捕获未处理异常。不过这个问题只在x64系统中有,所以也一直没有得到太大关注。
这个问题并没有什么很好的解决方案,MSDN虽然在文章末尾也提到了个办法:在Debug->Exceptions菜单中设置抛出所有异常。
这种办法并不完美,这么做虽然在Form_Load的时候能捕获到异常了,但所有已处理异常也能捕获到,这个往往不是我们所期望的。不过作为像上面我的那种情况,只是为了一时调试一下代码,也还是可以勉强一用的。