Unity ET框架中async void方法异常捕获问题及解决方案
在使用ET框架时,如果在异步方法中使用'async void',确实无法捕获异常。这是由于'async void'方法的异常无法被上层代码捕获的特性所导致的。
一种解决方法是将'async void'方法改为'async Task'方法,并在调用该方法的地方使用try-catch语句来捕获异常。例如:
private async Task DoSomethingAsync()
{
// 异步操作
}
public async void CallDoSomethingAsync()
{
try
{
await DoSomethingAsync();
}
catch (Exception ex)
{
// 处理异常
}
}
这样,异常就可以被try-catch语句捕获并进行处理。
另外,如果你使用的是Unity 2017.1之后的版本,也可以尝试使用Unity的新特性—AsyncTaskMethodBuilder来解决这个问题。具体的实现可以参考Unity官方文档中的示例代码。
原文地址: https://www.cveoy.top/t/topic/o9P1 著作权归作者所有。请勿转载和采集!