有没有可能 make_shared 除了 returns nullptr 没有任何例外?
Is it possible that make_shared has no any exception but returns a nullptr?
我最近在处理 shared_ptr 的问题。我很好奇如果 make_shared 失败了,它会引发异常吗?是否存在 make_shared 返回 nullptr 但无一例外的情况?
来自docs:
std::make_shared
...
May throw std::bad_alloc or any exception thrown by the constructor of
T.
因此,如果您从 class' 构造函数中抛出异常,那么 std::make_shared
也会抛出异常。除了构造函数抛出的异常之外,std::make_shared
可以自己抛出 std::bad_alloc
异常。
因此,您不需要检查 std::make_shared
的结果是否为 nullptr
。一定要捕获异常并妥善处理它。
我最近在处理 shared_ptr 的问题。我很好奇如果 make_shared 失败了,它会引发异常吗?是否存在 make_shared 返回 nullptr 但无一例外的情况?
来自docs:
std::make_shared
...May throw std::bad_alloc or any exception thrown by the constructor of T.
因此,如果您从 class' 构造函数中抛出异常,那么 std::make_shared
也会抛出异常。除了构造函数抛出的异常之外,std::make_shared
可以自己抛出 std::bad_alloc
异常。
因此,您不需要检查 std::make_shared
的结果是否为 nullptr
。一定要捕获异常并妥善处理它。