BookSleeve的性能非常好,因为它尽可能多地使用异步 IO。
但问题是,它可能会从异步操作中引发致命异常并使我的应用程序崩溃。
我知道关键字 await 可以提供帮助,但我不能在每次通话时都使用 await。
有没有办法在全局范围内捕获未处理的异常?
BookSleeve的性能非常好,因为它尽可能多地使用异步 IO。
但问题是,它可能会从异步操作中引发致命异常并使我的应用程序崩溃。
我知道关键字 await 可以提供帮助,但我不能在每次通话时都使用 await。
有没有办法在全局范围内捕获未处理的异常?
您使用的是什么版本的库?BookSleeve 在内部专门观察自己的异常,以便它们不会导致任何崩溃,但是,您也可以:
.Error
事件TaskScheduler.UnobservedTaskException
事件严格来说,这些都不应该是必需的。后者不会阻止应用程序关闭,但同样:这无关紧要- 除非某些代码中存在错误并且它缺少一个或多个任务
但在更一般的层面上,检查您的任务发生了什么是一种很好的做法。如果您不想要await
它们,可能仍然值得订阅一个ContinueWith
检查异常的方法。此外,您不一定需要await
;在许多情况下,connection.Wait(result)
这也很好 - 尽管这确实会占用主线程更长的时间(但请注意:它不会占用多路复用器)。