Async 方法中没有异常

看来我不能在异步方法中抛出异常:


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 并打印错误,但为什么控制台忽略了异常?它没有显示在错误部分,我检查过我会从那里错过它。


我怎样才能得到打印的例外?


SMILET
浏览 112回答 3
3回答

三国纷争

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

天涯尽头无女友

需要进行修复才能使其正常工作。神奇的是您需要等到 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 }

泛舟湖上清波郎朗

您需要await通过修改方法的签名来使用您的Start()方法async Task Start(){    await ReadAndThrow(null);}
打开App,查看更多内容
随时随地看视频慕课网APP