如何在CodeBlocks IDE上修复此警告,警告:按值[-Wcatch-value =]捕获多态类型'class std :: domain_error'

use*_*708 4 c++ warnings

我的成绩函数中有一个throw domain_error(“学生未完成任何功课”)异常,如果用户未输入作业成绩,导致向量的大小为0。那么我尝试了一次在主体中调用此函数和catch块,并且编译器发出警告。

主要功能的局部视图

read_hw(cin,homework);
try
{
    double _final_grade = grade(midterm,_final,homework);
    streamsize prec = cout.precision();
    cout << "Your final grade is "<<setprecision(3) << _final_grade << 
    setprecision(prec) << endl;
}
catch(domain_error)
{
    cout << "You must enter your grades. Please try again" <<endl;
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

jkb*_*jkb 6

异常应该通过常量引用而不是值来捕获。

使用

catch(const domain_error &)
Run Code Online (Sandbox Code Playgroud)