我正在开始一个项目,我想知道在文件输入处理期间处理错误的最佳实践。我目前对该项目的计划涉及以下过程main
:
unique_ptr<Configuration> config(initConfig(argc,argv));
unique_ptr<InterfaceA> a(initA(config));
// Do real work here
配置类和所有其他类的初始化数据将包含在其输入文件的标头中,例如:
#ObjectA-1
ObjectA
告诉我我有一个文件打算变成一个满足的对象,InterfaceA
并且1
告诉我要使用该接口的哪个具体实现。
initConfig
我的问题是对和等函数的错误处理initA
。在这些函数中,我将解析它们各自文件的第一行,并解码上述信息。比方说,如果initA
我碰巧得到一个没有适当标题的文件,无论是它#ObjectB-3
,还是根本没有标题。我看到了两种处理错误的方法:
抛出将在 main 中捕获的异常。这将允许我打印错误,然后通过错误标志绕过其他初始化函数,并进行任何我需要的高级清理。不好的部分
main
是它们主要由异常处理组成,这使得代码更难阅读。从 init 函数内部打印一个错误,然后调用
exit(EXIT_FAILURE)
并依靠我的操作系统来清理以前分配的内存。这可能会导致更简洁的代码和更多的本地错误处理。
如果不是为了使用该exit
功能,我个人更喜欢第二种。