您好,欢迎访问一九零五行业门户网

如何捕获 C# 中 async void 方法抛出的异常?

在同步 c# 代码中,异常在调用堆栈中向上传播,直到到达可以处理异常的适当 catch 块。但是,异步方法中的异常处理并不那么简单。
c# 中的异步方法可以具有三种类型的返回值:void、task 和 task。当返回类型为 task 或 task 的异步方法中发生异常时,异常对象将包装在 aggregateexception 实例中并附加到 task 对象。
如果抛出多个异常,则所有异常都会被抛出。它们存储在 task 对象中。
示例 1static async task main(string[] args) { await dosomething(); console.readline();}public static async task foo() { throw new argumentnullexception();}public static async task dosomething(){ try{ await foo(); } catch (argumentnullexception ex){ console.writeline(ex); }}
输出system.argumentnullexception: value cannot be null.at demoapplication.program.foo() in c:\users\koushik\desktop\questions\consoleapp\program.cs:line 37at demoapplication.program.dosomething() in c:\users\koushik\desktop\questions\consoleapp\program.cs:line 44
以上就是如何捕获 c# 中 async void 方法抛出的异常?的详细内容。
其它类似信息

推荐信息