Hem*_*ant 7 .net c# exception-handling
我正在开发一个用于与外部设备进行通信(通过RS232串行通信)的库.我在考虑错误处理策略,异常似乎是正确的,行业标准的报告错误方式.
所以我读了一些关于例外的指南.一个很明确指出,我不担心性能问题:
不要使用错误代码,因为担心异常可能会对性能产生负面影响.
其他告诉我在正常情况下不要抛出异常:
不要将异常用于正常或预期的错误,也不要用于正常的控制流程.
我无法在正常/预期和其他情况之间划清界限.例如,在我的库中,操作可能会失败,因为:
我可以认为上述所有问题都是预期的问题,因为它们可能经常在实践中发生(事实上许多营销蠢货叫我解决我的软件中的^问题^只是为了发现他们没有将电缆连接到他们的笔记本电脑).因此可能不应该抛出异常,因为否则应用程序员必须在很多地方捕获那些(很多我认为很多catch块也不好).
另一方面,我也倾向于认为这些都是我在某种程度上需要向应用程序员报告的错误,异常似乎是这样做的方法.如果我不使用异常,我将需要使用一些错误代码或错误枚举报告这些问题.(丑陋,我知道).
你认为我应该采取哪种方法?
您正在开发一个库,一个将被其他应用程序使用的组件.
因此,在预期的情况下,你提到我肯定会使用异常来与调用应用程序通信,这是有问题的.您应该为每个场景定义一个自定义例外,然后清楚地记录它们何时可能发生.
然后,这允许应用程序客户端代码决定如何最好地继续.只有客户端应用程序才能做出此决定,并且明确记录的异常对此有很大帮
关于自定义异常的最好的事情是,您可以提供与问题/异常相关的多个有意义/有用的数据片段.这个数据也很好地封装在一个对象中.将其与错误代码和返回值进行比较.
性能可能是一个问题,但只有在紧急循环或某些其他高活动情况下抛出异常时才会出现问题.为了避免这种情况,您还可以应用.NET Framework使用的模式,即提供Try ....()方法(例如TryParse()),返回布尔值,指示操作是成功还是失败.
无论哪种方式,我最初都会使用自定义异常,然后执行性能测试以实际查看库中是否存在可能需要优化的某些部分.
| 归档时间: |
|
| 查看次数: |
394 次 |
| 最近记录: |