捕获预定义的 int 异常

  • 本文关键字:int 异常 预定义 c++
  • 更新时间 :
  • 英文 :


我定义了一个简单的整数错误代码:

#define my_error 20

在我的代码中的某个地方,我抛出了这个错误:

throw my_error;

现在我想尝试捕获引发的异常:

try
{
    ...
    ...
}
catch (my_error)
{
    cout << "Error: my error";
}

不幸的是,编译器不批准这一点:

  • 语法错误:"常量"
  • 捕获处理程序必须指定一种类型
  • 从第 "34" 行开始的"try"块没有捕获处理程序

有没有办法做到这一点?

20

是一个类型,所以你无法捕捉它。您可以做的是过滤catch块中的值:

catch (int exception)
{
    if ( exception == 20 )
        cout << "Error: my error";
}

更好的方法是定义自己的异常:

class MyException : public std::exception
{
}
//...
try
{
   throw MyException();
}
catch(MyException& ex)
{
}
如果您使用

C++11,则可以使用 decltype(my_error) ,以防万一您更改my_error的类型。

try {
  // ...
} catch (const decltype(my_error)& e) {
  // ...
}

这是一个演示。

相关内容

最新更新