当前位置: 首页 > 工具软件 > Stout > 使用案例 >

stout代码分支之十二:巧妙的EXIT

岳俊晖
2023-12-01

  在c++中,为了便于定位问题,进程异常退出时,需要获取返回码和错误信息。stout中将这种功能巧妙的封装成EXIT类。

  

#define EXIT(status) __Exit(status).stream()

struct __Exit
{
  __Exit(int _status) : status(_status) {}

  NORETURN ~__Exit()
  {
    std::cerr << out.str() << std::endl;
    exit(status);
  }

  std::ostream& stream()
  {
    return out;
  }

  std::ostringstream out;
  const int status;
};

  __EXIT类以返回码作为构造函数参数,在析构时,先将错误信息输出到cerr中,再执行exit(status)。这是RAII的一次巧妙实践。

  用户只需要执行

EXIT(1) << "something failed";

  就可以1退出,同时输出"something failed"。

转载于:https://www.cnblogs.com/taiyang-li/p/5905515.html

 类似资料: