为了账号安全,请及时绑定邮箱和手机立即绑定

Async 方法中没有异常

Async 方法中没有异常

C#
SMILET 2022-10-23 15:32:47
看来我不能在异步方法中抛出异常:void Start (){    ReadAndThrow(null);}public static async Task ReadAndThrow(string path){    if(string.IsNullOrEmpty(path) == true)     {          Debug.Log("Wrong");          throw new Exception("Wrong");     }    using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))    {        using (StreamReader reader = new StreamReader(fs, Encoding.UTF8))        {            string line = null;            while ((line = await reader.ReadLineAsync()) != null) { }        }    }}有了这个,我可以看到调试,但控制台中没有打印异常。它确实停止了应用程序,基本上,异常发生但没有打印在控制台中。我可以使用 try catch 并打印错误,但为什么控制台忽略了异常?它没有显示在错误部分,我检查过我会从那里错过它。我怎样才能得到打印的例外?
查看完整描述

3 回答

?
三国纷争

TA贡献1804条经验 获得超7个赞

ReadAndThrow将在打印异常之前完成。需要awai它。



查看完整回答
反对 回复 2022-10-23
?
天涯尽头无女友

TA贡献1831条经验 获得超9个赞

需要进行修复才能使其正常工作。神奇的是您需要等到 ReadAndThrow 完成。我还建议阅读https://learn.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/async/


public Task StartAsync ()

{

    return ReadAndThrow(null); //and await StartAsync method

    //or

    await ReadAndThrow(); // do not forget to make method async 

}


查看完整回答
反对 回复 2022-10-23
?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

您需要await通过修改方法的签名来使用您的Start()方法


async Task Start()

{

    await ReadAndThrow(null);

}


查看完整回答
反对 回复 2022-10-23
  • 3 回答
  • 0 关注
  • 111 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信