【发布时间】:2018-11-18 20:25:01
【问题描述】:
在 asp.net MVC 中,当我调试和单步执行代码时,调试器将停在有问题的行并显示抛出的异常,而该行不在 try..catch 中。但是,当使用 await..async 的行时,调试器不会暂停,并且在我有机会在调试器中看到它之前,异常只是作为响应返回。 VS2017中是否有设置,可以在调用异步方法时暂停调试器并检查此异常?
【问题讨论】:
-
这些是 async Task 还是 async void 方法?
-
你能提供一点代码吗?请记住,在调试时只有 UI 线程上的错误会被 VS 调试器捕获。处理错误时,您必须记住错误被抛出的线程。
-
@JStevens 在将有问题的 await 行放在 try 块中调用异步方法时,我能够捕获异常。所以我不确定为什么调试器不能自己弄清楚,当一个特定的线程抛出异常时,它应该在调试器中显示异常并在那里暂停,而不是仅仅将它传递给响应。
-
调试器正在 UI 线程中运行。这样想吧。调试器是你,你有 2 个孩子 T1 和 T2。 T1 在车里陪你去商场。与此同时,T2 和朋友一起去看电影。 T2 不在您的车内。你不知道他真正在做什么。你只知道你告诉他做什么。你不是为了抓住他的错误。
-
是的,这是有道理的。那么有没有办法告诉调试器附加到特定线程?
标签: c# asp.net-mvc async-await visual-studio-2017