【发布时间】:2015-04-13 15:55:35
【问题描述】:
我正在使用一个希望我使用的外部 SDK
try {
...
}
catch (Ex20301Exception)
{
...
}
我宁愿使用
try {
...
}
catch (CustomerOverCreditLimitException)
{
...
}
有什么方法可以实现吗? 还是我必须和 cmets 一起生活?
【问题讨论】:
-
只有当你包装了外部代码时,才捕获那些异常并将它们包装在你的异常中。
-
你可以使用别名,虽然这是每个模块,但没有办法为每个项目创建别名(更不用说每个解决方案)
-
虽然您可以使用答案中指出的别名来实现此目的,但我认为您不应该这样做,而应该只使用第三方名称。所有这一切都会使其他期望第三方记录的异常类的开发人员感到困惑。如果您想使用更友好的名称(或特定于您的域的名称),请编写一个包装器。
-
尽管我在上面发表了评论,但我同意@AntP
-
这使得使用包装器 更多 更方便,而不是更少 - 你的代码应该只有一个与 API 的逻辑接触点,所以只需为部件编写一个适配器您的客户端代码需要的 API 并将该接口公开给应用程序的其余部分。然后问题完全消失,无论您需要使用 API 多少次或在多少地方,直到您需要使用它的 new 部分,那么您只需要一个包装器的小扩展。这促进了良好的封装以及更容易。
标签: c#