这些功能是否正确实现noexcept
/throw()
第一个函数
void do_something(const std::string s) noexcept{
// do something with no exception
}
do_something("Hello");
"Hello" literal
将创建新std::string
对象,它可能会引发异常。
这个异常是在函数外抛出还是在函数内抛出?
第二个功能:
size_t do_something(const char *s) noexcept{
return strlen(s);
}
do_something(nullptr);
strlen
之所以选择它是因为它是旧C
功能并且会崩溃,因为s
is nullprt
。
但是,此崩溃与异常无关。假设正确吗?