c ++解析异常类中的参数

Mel*_*kon 1 c++ arguments exception-handling throw

我试图使用一个类来抛出异常,但异常虽然必须抛出一个值.我如何创建类,以便在抛出异常时它携带一个值到处理程序?

Luc*_*ore 5

您可以实现自己的异常类.

struct MyException
{
   MyException(int v) : val(v) {};
   int val;
};

...

try 
{
   throw MyException(5);
}
catch ( const MyException& m )
{
   assert( m.val == 5 );
}
Run Code Online (Sandbox Code Playgroud)

  • @MariusBucur:还建议从`std :: exception`继承异常,并且引用catch可以扩展为`const`引用,除非你真的打算修改捕获的异常(因此通常重新抛出它). (3认同)
  • 注意:建议按值抛出并按引用捕获. (2认同)