【发布时间】:2014-06-03 03:05:56
【问题描述】:
我正在 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 无响应:
“/”应用程序中的服务器错误。
输入字符串的格式不正确。
描述:执行过程中发生了未处理的异常 当前的网络请求。请查看堆栈跟踪以获取更多信息 有关错误的信息以及它在代码中的来源。
异常详细信息:System.FormatException:输入字符串不在 格式正确。
来源错误:
第 291 行:如果 Db.Users.Find(acct.username) 什么都没有,那么
第 292 行:将对象变暗 = "he"
第 293 行:将 b 调暗为 Integer = a
当我将相同的异常生成代码插入代码的非异步部分时,VS 调试器 确实 会捕获异常 - 所以我猜这是调试异步代码的问题。 VS调试器真的无法捕捉到这些异常吗?
更新
经过进一步搜索,我发现了一个建议,即禁用“仅我的代码”并手动启用各种类型的异常。有预期的第一次机会异常的冰雹,我可以通过禁用某些异常来调整其中的大部分。但这 DID “修复”了上述行为。调试器似乎将我的子异步线程视为“不是我的代码”。有点困惑,但我想这可能是某种答案?
【问题讨论】:
-
这对我也有用!如果您回答自己的问题,我(和其他人)可以投票。我投票赞成你所有其他的帖子来给你更多的代表,因为当代表低于 50 时会有一些限制。
-
另外,在问题和标签中添加了“异步”。
-
是的,这就是答案。 “只是我的代码”应该(IMO)始终被关闭 - 它会产生问题/混乱,并且不会增加太多价值。
标签: exception visual-studio-2013 async-await visual-studio-debugging