【OpenHarmony】make_shared和make_unique失败时总会抛异常,和是否禁用异常无关

一、背景
在项目代码里面有很多这种判断:
handler_ = std::make_shared(eventRunner_, pms);
if (handler_ == nullptr) {
USB_HILOGE(MODULE_USB_SERVICE, "Init failed due to create handler error");
return false;
}

对此不同人有不同看法:
有些人认为应该判空,防止后面使用handler_的时候对空指针解引用。有人认为,make_shared失败后会抛异常,且handler值是未定义的,判空实际无效。
二、探索
1、构造失败场景
思路
当前我们可以确定的是,new(nothrow),能够申请到内存,并且出错后会返回nullptr。所以可以使用new将内存耗尽(包括虚拟内存),

【OpenHarmony】make_shared和make_unique失败时总会抛异常,和是否禁用异常无关最先出现在Python成神之路

版权声明:
作者:主机优惠
链接:https://www.techfm.club/p/27849.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>