exception - 调试器未捕获异步异常

标签 exception visual-studio-2013 async-await visual-studio-debugging

我正在 VS2013 中开发一个 MVC5 项目。我似乎发现大多数(但不是全部)异常都被调试器忽略,因此我最终将异常和堆栈跟踪简单地写入浏览器,从而排除了对涉及的对象的任何检查异常。

例如 - 我故意编写一个异常来证明这一点:

    <Authorize(Roles:="IdentityAdmin")>
Public Async Function Import(model As RegisterViewModel) As Task(Of ActionResult)
    Dim a As Object = "he"
    Dim b As Integer = a

显然,最后一行将引发“类型不匹配”异常,我认为这应该会导致调试器停止执行,突出显示 VS2013 UI 中的错误,使我能够检查各种对象并确定问题。

相反,我只是发现自己的浏览器详细说明了异常并且 VS2013 无响应:

Server Error in '/' Application.

Input string was not in a correct format.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Input string was not in a correct format.

Source Error:

Line 291: If Db.Users.Find(acct.username) Is Nothing Then

Line 292: Dim a As Object = "he"

Line 293: Dim b As Integer = a

当我将相同的异常生成代码插入代码的非异步部分时,VS 调试器确实捕获异常 - 所以我猜测这是调试异步代码的问题。难道VS调试器真的无法捕获这些异常吗?

更新

经过进一步搜索,我发现了禁用“仅我的代码”并手动启用各种类型的异常的建议。预计会出现第一次机会异常的冰雹,我可以通过禁用某些异常来消除其中的大部分情况。但这确实“修复”了上述行为。调试器似乎将我的子异步线程视为“不是我的代码”。有点困惑,但我想这可能是某种答案?

最佳答案

根据上面的更新,问题中详细说明的有问题的行为似乎可以通过以下组合来修复:

  • 关闭调试器选项中的“仅我的代码”。
  • 在“调试/异常”中启用某些类型的异常。 - 就我而言,公共(public)语言运行时异常和托管调试助手似乎可以确保调试器捕获我的所有异常(异步或其他异常)。
  • 禁用引发最多痛苦(错误的全局化等)的(但不起眼的)异常。

最后两个阶段是通过反复试验而发生的,我怀疑当我清理项目时,我最终应该追查大多数这些非破坏性异常。

关于exception - 调试器未捕获异步异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23156931/

相关文章:

php - Symfony\组件\HttpKernel\异常\NotFoundHttpException : object not found

c# - 为什么 OdbcCommand.ExecuteScalar() 抛出 AccessViolationException?

java - 为什么不能共享 BoxLayout 而 FlowLayout 可以?

c# - AppDomain.UnhandledException 自动重新抛出已处理的异常

c++ - 从 cmake 在 VS 2013 中启用 C++11 支持

c# - 调试时无法设置下一条语句

visual-studio-2013 - visual studio 2013 更新 3 中无法识别的 guid 格式

c# - 在 Converter 中显示 StorageItem 缩略图

c# - 如何编写测试以公开从 using block 返回任务?

javascript - 如何强制 AWS Cognito : signUp() to execute synchronously (nodejs)