在TAP以前,若要捕获线程中Task的异常,一般有两种办法:函数
一、阻塞:线程开始后,在适当的时机,调用 wait,或waitAll方法。线程
二、非阻塞(推荐):在创建任务的时候,写该task的continueWith方法,在该方法中捕获异常。it
对于TAP时代,咱们若要捕获一个带有asyn关键字的Task任务,用continueWith方法会捕获失败。注册全局的静态方法也不行。程序
阻塞式:和TAP以前一致。方法
非阻塞式:用异常
await Task.WhenAll()co
await t.Wait()阻塞
await t.result等皆可。非阻塞
前提是要有await关键字,这样看似不错,省了continueWith,可是问题是await只容许在asyn标志的函数中去执行,这样会给你的程序带来传染性问题。注册
由此能够这样说,await关键字其实和continueWith的做用相似,只是简化了写法,让程序看的更整齐,但这样所付出的代价是否是有点大?