我怎样才能知道一个方法可以抛出什么类型的异常

本文关键字:方法 什么 异常 类型 一个 | 更新日期: 2023-09-27 18:28:59

我正在编写调用Windows.Networking.PushNotifications 中存在的以下方法的代码

// Summary:
//     Creates objects that you use to retrieve push notification channels from
//     the Windows Push Notification Services (WNS). These channels are bound to
//     an app or secondary tile.
[Threading(ThreadingModel.MTA)]
[Version(100794368)]
public static class PushNotificationChannelManager
{
    // Summary:
    //     Creates an object, bound to the calling app, through which you retrieve a
    //     push notification channel from Windows Push Notification Services (WNS).
    //
    // Returns:
    //     The object, bound to the calling app, that is used to request a PushNotificationChannel
    //     from the Windows Push Notification Services (WNS).
    [Overload("CreatePushNotificationChannelForApplicationAsync")]
    public static IAsyncOperation<PushNotificationChannel> CreatePushNotificationChannelForApplicationAsync();
}

我想确保涵盖所有可以抛出异常的情况,并适当地处理每种情况。我有可能得到一个列表,列出这可能引发的不同类型的异常以及可能导致这些异常的不同情况吗?

我不想有一个包罗万象的

catch(Exception ex) { }    

MSDN的这篇文章指出,"如果在没有数据连接的情况下尝试注册WNS推送通知通道,则会引发异常"。然而,它并没有说明什么类型的异常,也没有说明何时可以引发异常。

如何了解是否存在其他可能的异常类型

我怎样才能知道一个方法可以抛出什么类型的异常

唯一的方法是文档和源代码,但请注意,可能会抛出许多其他异常,如OutOfMemoryExceptionTypeLoadExceptionThreadAbortException和。。。因此,在我看来,正确的方法是捕捉异常——你可以对它们采取一些措施,让其他人在调用堆栈中冒泡。

也阅读此Vexing异常

如果您可以模拟该链接中提到的错误条件之一,那么您应该能够使用通用异常捕获来查看抛出的类型。

不过,根据文章中提到的错误代码,我认为它将抛出一个System.Runtime.InteropServices.COMException

我想确保涵盖所有可以抛出异常的情况,并适当地处理每个

不可能涵盖所有可以抛出异常并对每个异常进行适当处理的情况。

如果您完全了解可以抛出特定异常的情况,并且了解程序的不变量,并且知道它们仍然有效,或者知道如何还原它们,那么您就可以从异常中恢复。

但是,例如,你可能会遇到一个由宇宙射线引起的异常,它破坏了机器的状态,导致访问违规。你将如何从中恢复?总有一点是,项目必须举手示意支持人员。