我在调试器中遇到这样的问题,程序停止执行。调试器没有显示该行,所以我不知道要修复什么。
mscorlib.dll中发生了未处理的“System.AggregateException”类型异常
附加信息:通过等待任务或访问其Exception属性未观察到任务的异常。结果,终结器线程重新抛出了未观察到的异常。
无法获得本地或参数''的值,因为它在此指令指针处不可用,可能是因为它已经被优化掉了。 System.Threading.Tasks.TaskExceptionHolder
如何解决我的问题?
正如消息所说,你有一个抛出未处理异常的任务。
打开所有异常中断(调试,例外)并重新运行该程序。 这将在最初抛出时显示原始异常。
(附加评论):在VS2015(或以上)。选择Debug> Options> Debugging> General,取消选中“Enable Just My Code”选项。
你可以直接处理异常,这样就不会崩溃程序(捕获AggregateException
)。您还可以查看内部异常,这将为您提供更详细的错误说明:
try {
// your code
} catch (AggregateException e) {
}
如果您可以轻松地重现问题,则接受的答案将起作用。但是,作为最佳实践,您应该捕获在任务中执行的任何异常(和日志记录)。否则,如果任务中发生任何意外情况,您的应用程序将崩溃。
Task.Factory.StartNew(x=>
throw new Exception("I didn't account for this");
)
但是,如果我们这样做,至少应用程序不会崩溃。
Task.Factory.StartNew(x=>
try {
throw new Exception("I didn't account for this");
}
catch(Exception ex) {
//Log ex
}
)
在我的情况下,我在使用Edge.js时遇到了这个问题 - 所有问题都是C#Edge.js函数定义中的JavaScript语法错误。