我有一个小问题,我无法用干净的方式解决。 我正在尝试一些多态异常处理,所以我在我的异常类中添加了一个提升虚拟函数,用于实际投掷,并用raise()调用替换了投掷。 一切正常,但然后我应用这个解决方案的功能与返回类型具有以下一般形式:多态异常处理和编译器警告
Obj Foo()
{
if(true)
return Obj
else
{
//throw Exception; //With this call everything is fine
Exception e{};
e.raise(); //The compiler warns me that I do not return anything
}
}
当我编译这种功能的GCC编译器(V4.9)抱怨富到达没有返回结束(-Wreturn-type) 有没有办法说服编译器,一切正常,没有隐藏警告呢?
_是否有办法让编译器确信一切正常,而不会将警告隐藏起来?_是不是不相交? – erip
多态异常?为什么?派生自'std :: runtime_error'或'std :: logic_error'。然后抛出你想抛出的异常 - 每个问题类型一个异常类型。 –
@erip:它们不是不相交的,因为一切都确实没问题,如果我将raise函数的throw语句带到body中,编译器会认识到所有的执行路径都会正确返回。如果它隐藏在raise()函数中,编译器会抱怨 – Triskeldeian