我注意到一些奇怪的事情,无法找到为什么这不能正常工作。
我遇到的错误是在Async子程序中引发异常的一个
Private Async Sub Test1
If Await SomeAsyncReadProcess <> "My Result" then
Throw New Exception("Onoo invalid result!")
End if
End sub
然后,如果在尝试捕获中包含此Sub,则使代码更高。现在奇怪的是,当我引发新异常时,调试器停止运行并说System.Reflection.TargetInvocationException
。当我在不使用Aynsc / Await的情况下将子菜单还原回SYNC子菜单时,一切都会按预期进行。
答案 0 :(得分:1)
您无法轻易地从Async Sub
捕获异常。这是设计使然,因为Async Sub
方法是非常不寻常的Async
方法,其作用类似于顶级事件处理程序。一般规则是"avoid async void
" (or in this case, Async Sub
)。
适当的解决方法是将Async Sub
更改为Async Function ... As Task
。