gpt4 book ai didi

c# - 如何查找 OpenReadAsync 方法抛出的异常

转载 作者:行者123 更新时间:2023-11-30 17:54:09 25 4
gpt4 key购买 nike

考虑以下代码:

using (IRandomAccessStream stream = await storageFile.OpenReadAsync())
{
using (DataReader dataReader = new DataReader(stream))
{
uint length = (uint)stream.Size;
await dataReader.LoadAsync(length);
txtbox.Text = dataReader.ReadString(length);
}
}

storageFile.OpenReadAsync 可能会抛出异常,System.IO.FileNotFoundException 是一种可能的异常类型。 MSDN 主题 StorageFile.OpenReadAsync http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.storagefile.openreadasync不包含此方法抛出的异常类型列表。我如何从文档中找到这些信息?我可以捕获 Exception 类型,但这是糟糕的编程习惯。

最佳答案

在无法找到所有异常列表的情况下,我通常使用 VS SDK 中的方法 ErrorHandler.IsCriticalException :

try
{
// ...
}
catch(Exception e)
{
if (ErrorHandler.IsCriticalException(e))
{
throw;
}

// log it or show something to user
}

您可以反编译 Microsoft.VisualStudio.Shell.11.0.dll 以找到异常列表,ErrorHandler 将其定义为 Critical:

  • 堆栈溢出异常
  • 访问冲突异常
  • AppDomainUnloadedException
  • BadImageFormatException
  • 除零异常

在 Windows 运行时的情况下,我认为验证一些 HResult 也会很好。 Exception 中的值,例如 E_OUTOFMEMORY、E_ABORT、E_FAIL,也许还有其他值。

我还发现 BugSense对记录异常有很好的帮助。我不仅将它用于未处理的异常,而且还用于这种我不知道该方法会抛出什么的情况。它允许使用 BugSenseHandler.Instance.LogException 发送自定义日志记录(包括异常),所以我只收集有关不同类型异常的信息(包括带有一些意外 HResult 的异常)并在每次发布。

关于c# - 如何查找 OpenReadAsync 方法抛出的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16302567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com