看来我不能在异步方法中抛出异常: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贡献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
}
泛舟湖上清波郎朗
TA贡献1818条经验 获得超3个赞
您需要await通过修改方法的签名来使用您的Start()方法
async Task Start()
{
await ReadAndThrow(null);
}
- 3 回答
- 0 关注
- 111 浏览
添加回答
举报
0/150
提交
取消