捕获预定义的int异常

Mic*_*ael 2 c++

我已经定义了一个简单的int错误代码:

#define my_error 20
Run Code Online (Sandbox Code Playgroud)

在我的代码中的某处我抛出此错误:

throw my_error;
Run Code Online (Sandbox Code Playgroud)

现在我想尝试捕获抛出的这个异常:

try
{
    ...
    ...
}
catch (my_error)
{
    cout << "Error: my error";
}
Run Code Online (Sandbox Code Playgroud)

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

  • 语法错误:'常数'
  • catch处理程序必须指定一种类型
  • 在'34'线上开始'尝试'阻止没有捕获处理程序

有没有办法做到这一点 ?

谢谢.

Luc*_*ore 8

20不是一种类型,所以你无法抓住它.你可以做的是过滤catch块中的值:

catch (int exception)
{
    if ( exception == 20 )
        cout << "Error: my error";
}
Run Code Online (Sandbox Code Playgroud)

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

class MyException : public std::exception
{
}

//...

try
{
   throw MyException();
}
catch(MyException& ex)
{
}
Run Code Online (Sandbox Code Playgroud)