我正在开发一个库,旨在通过RS232串行通信与外部设备通信。我正在考虑错误处理策略,异常似乎是报告错误的正确和行业标准方式。
因此,我阅读了一些关于异常的指南。其中一篇非常明确地指出我不应该担心性能损失:
不要使用错误代码,因为担心异常会对性能产生负面影响。
其他一篇告诉我在正常情况下不要抛出异常:
不要将异常用于正常或预期的错误,或用于正常的控制流程。
我无法清楚地划分正常/预期和其他情况之间的界限。例如,在我的库中,操作可能失败,因为:
- 设备无响应。(未连接电缆,设备未开启,波特率错误)
- 操作请求被设备拒绝,因为它无法验证该请求。
- 通信失败。(有人绊倒了电缆,设备突然断电)
我认为以上所有问题都可以视为预期问题,因为它们在实践中经常发生(事实上,许多营销白痴打电话给我解决他们的软件“问题”,结果发现他们没有将电缆连接到笔记本电脑)。因此,可能不应抛出异常,否则应用程序员将不得不在很多地方捕获这些异常(我认为太多的catch块也不是好事)。
另一方面,我也倾向于认为这些都是错误,我必须以某种方式向应用程序员报告,而异常似乎是这样做的方法。如果我不使用异常,我将需要使用某些错误代码或错误枚举来报告这些问题。(很丑陋,我知道)。
你认为我应该采取哪种方法?