stout代码分析之四:Try类

  stout的在异常捕获上遵循于谷歌类似的原则,不适用try...catch...,而是从函数返回值判断异常。Try类正是实现了这样的一个功能。

  同Option一样,Try是一个模板类,每个类对象都有两种状态。

enum State {
    SOME,
    ERROR
  };
  State state;
  T* t;
  std::string message;

  SOME表示无异常,用户可获取指针t。ERROR表示有异常,用户可用过message获取异常信息。以下是Try类的示例:

  

#include "stout/try.hpp"

int main()
{
  auto a = Try<int>::some(100);
  auto b = Try<int>::error("hello");
  
  std::cout << (a.isSome() ? "a is some" : "a is error") << std::endl;
  std::cout << (b.isSome() ? "b is some" : "b is error") << std::endl;
  
  std::cout << " b: " << b.error() << std::endl;
  // std::cout << " b: " << b.get() << std::endl;
  b = a;
  std::cout << " b: " << b.get() << std::endl;
  return 0;
}

 

 

  

posted @ 2016-09-18 15:05  后端技术小屋  阅读(339)  评论(0编辑  收藏  举报