C# 使用工厂/委托模式处理异常是否合适?

C# 使用工厂/委托模式处理异常是否合适?,c#,exception,design-patterns,C#,Exception,Design Patterns,我正在开发一个库,用于处理与各种imap服务器(邮件提供商)的连接,如(Gmail、Outlook、Yahoo、Orange…) 在主题中,一个方法使用刷新令牌(OAuth2)请求访问令牌,此方法可能会因多种原因引发异常(访问已撤销、invalidParameter、badRequest、invalidCredentials、DailyLimitExceped或无连接…) 例如,如果我收到一个撤销的访问异常,我应该处理它,因此下次用户连接时,我们会请求他的同意。 如果我得到了太多的请求异常,那么

我正在开发一个库,用于处理与各种imap服务器(邮件提供商)的连接,如(Gmail、Outlook、Yahoo、Orange…)

在主题中,一个方法使用刷新令牌(OAuth2)请求访问令牌,此方法可能会因多种原因引发异常(访问已撤销、invalidParameter、badRequest、invalidCredentials、DailyLimitExceped或无连接…)

例如,如果我收到一个撤销的访问异常,我应该处理它,因此下次用户连接时,我们会请求他的同意。
如果我得到了太多的请求异常,那么我会通过后退来处理它

问题:使用工厂/委托(C#)模式处理不同类型的异常是否合适?或者我应该以不同的方式处理吗?


谢谢,我的英语很抱歉。

首先要遵守开放/关闭原则,您应该使用“void HandleError(Exception Exception)”方法或类似方法编写基类或接口。然后,为每个要处理的错误派生一个类。如果您使用任何IoC/DI容器,它都可以为您创建所有可能的处理程序。否则,您的初始化必须创建所有实例


如果您寻找模式,我可以想象访客或责任链可能是候选人,这取决于您没有提供给我们的详细信息。

那么您是在征求我们对我们没有看到的代码的意见吗?嗯……我觉得在这种情况下,委托听起来很合理,我会尽量让代码简单易读。在
catch
中有很多行可能会降低可读性,所以我不明白为什么不能。但是,不确定这里的工厂模式,你真的想在
catch
中创建对象吗?@CarstenKönig,我只是想问一下,使用委托处理不同的异常是否合适,我不知道什么代码会有帮助。无论如何谢谢你。谢谢@oleksii的回复,只是我对5台imap服务器中的每台服务器都有很多不同的错误响应消息,到时候,我们可能会再添加10到15条。是的,我更倾向于代表。