表演定义自己的异常类型有用吗
本文关键字:有用 类型 异常 定义 自己的 表演 | 更新日期: 2023-09-27 18:29:00
例如,我有一个dll(Helper.dll
),它包含一些通过提供程序库(Provider.dll
)处理外部系统的方法。Provider.dll
定义了SystemIsDownException
,我在Helper.dll
中重新抛出它。此外,我还有另一个dll(Service.dll
),它使用Helper.dll
和大量其他dll,它必须捕获不同类型的异常并以某种方式处理它们。我的问题是:如果我在Service.dll
中捕获SystemIsDownException
(来自Provider.dll
),它真的会影响性能吗?或者,我应该为Helper.dll
中Provider.dll
的每个异常定义自己的异常类型吗?很抱歉问了这么长的问题。
做逻辑上必须做的事情,不要关心性能。
不要基于性能考虑来设计异常类型。如果你发现它们对你的图书馆的帮助和清晰度有意义和帮助,就创建它们。
简单地回答您的问题:如果您不处理异常并添加有用的信息,请不要捕获和重新抛出异常。仅仅捕获异常然后重新抛出它们会扰乱堆栈竞争(例如,当原始异常丢失时),当然也会影响性能(因为运行时需要准备一个堆栈竞争哑)。如果您需要从provider.dll
隐藏异常(如果service.dll
无法引用它),则需要在helper.dll
中重新抛出它们(如果您想在service.dll
中捕获来自provider.dll
的特定异常)。
一些想法:
- 编写的包装代码越少,维护代码就越容易
- 不要将异常用于逻辑控制
- 异常与性能关系不大,如果你问这个问题,你可能会用它来控制逻辑
因此,答案是:定义需要(独特地)处理的有用且有意义的异常。除非您使用异常来引导逻辑流,否则不会对性能造成影响,在这种情况下,您应该停止并重构应用程序。