我正在开发一个库来生成设备的报告。由于各种原因,generate_report (const std::string& no)成员函数可能会失败:
report_generator是FSM)哪种错误处理机制最适合这些错误?
true或false一些上下文信息:正常的工作流如下所示。用户激活设备,从列表中选择报表,然后单击"generate“。
编辑:谢谢你到目前为止的回复!对我来说,现在很清楚什么时候使用断言,什么时候做错误处理。至于错误处理,错误代码和异常都有优缺点。我想我会选择异常(并为上面的错误创建四个类),但我还不太确信。我总是想到“意外情况”的例外情况。无效的报告no并不是真正出乎意料的。有什么建议吗?)
发布于 2009-09-07 09:18:49
其中任何一个都有不同的目的:
true或false:错误代码的专门化。通常情况下,最糟糕的想法--只有在没有好的或坏的报告的情况下才是好的(即malloc返回好的或坏的(= NULL) )。发布于 2009-09-07 09:03:58
断言不是正确的选择。当你有一个不变量时使用断言;一些不应该发生的事情。不要做断言()之类的事情,如果参数是一个错误条件而不是一个不变量,那么它永远不会是空的。
如果是我,我将在接口中使用异常,如果必须的话,如果不使用异常,则通过内部使用的函数来翻译错误代码。在这方面要保持一致(不要为这些东西使用断言)。
发布于 2009-09-07 09:39:41
与真/假和错误代码相比,异常有几个重要的优点:
断言用于表示代码中的先决条件等内容,并有望在开发过程中发现任何bug。但是,您不应该依赖发布代码中的断言,而且出于性能原因,通常从发布代码中删除断言。
https://stackoverflow.com/questions/1388335
复制相似问题