相关疑难解决方法(0)

从构造函数的初始化列表中捕获异常

这是一个好奇的.我有一个A类.它有一个B类项目,我想在A的构造函数中使用初始化列表初始化,如下所示:

class A {
    public:
    A(const B& b): mB(b) { };

    private:
    B mB;
};
Run Code Online (Sandbox Code Playgroud)

有没有办法捕获mB的拷贝构造函数可能在使用初始化列表方法时抛出的异常?或者我是否必须在构造函数的大括号中初始化mB才能获得try/catch?

c++ exception

50
推荐指数
2
解决办法
2万
查看次数

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

我有一个cheesesales.txtCSV文件,包含我最近的所有奶酪销售.我想创建一个CheeseSales可以执行以下操作的类:

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

上面的代码假定不会发生任何故障.实际上,失败将会发生.在这种情况下,可能会发生两种故障:

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

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

一个想法:bool从常规方法返回a 表示失败.不知道如何处理构造函数.

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

c++

5
推荐指数
1
解决办法
470
查看次数

标签 统计

c++ ×2

exception ×1