gpt4 book ai didi

c++ - C++ 中的错误处理,构造函数与常规方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:08:04 27 4
gpt4 key购买 nike

我有一个 cheesesales.txt CSV 文件,其中包含我最近的所有奶酪销售情况。我想创建一个 CheeseSales 类,它可以执行以下操作:

CheeseSales sales("cheesesales.txt"); //has no default constructor
cout << sales.totalSales() << endl;
sales.outputPieChart("piechart.pdf");

以上代码假定不会发生任何故障。实际上,失败是会发生的。在这种情况下,可能会出现两种故障:

  • 构造函数失败:文件可能不存在、可能没有读取权限、包含无效/无法解析的数据等。
  • 常规方法失败:文件可能已经存在,可能没有写入权限,可用于创建饼图的销售数据太少等。

我的问题很简单:您将如何设计这段代码来处理故障?

一个想法:从表示失败的常规方法返回一个 bool。不确定如何处理构造函数。

经验丰富的 C++ 程序员会如何做这些事情?

最佳答案

在 C++ 中,异常是报告错误的方式。可以处理初始化列表中的顺便说一句异常。

A function-try-block associates a handler seq with the ctor-initializer, if present, and the function-body. An exception thrown during the execution of the initializer expressions in the ctor-initializer or during the execution of the function-body transfers control to a handler in a function-try-block in the same way as an exception thrown during the execution of a try-block transfers control to other handlers.

好的代码通常应该在最上层(线程)级别使用最少的 try/catch block 。最好只有一个。这样,知道“一切都会抛出”,您就不会过多地考虑错误,并且您的正常场景代码流看起来很干净。

关于c++ - C++ 中的错误处理,构造函数与常规方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13668091/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com