【发布时间】:2022-09-22 23:24:09
【问题描述】:
在构造std::exception 时将c_str() 作为参数传递是否安全?如果处理这样的异常是一个坏主意,请告诉我。在我的项目中,所有错误消息都作为std::string 从函数返回,然后作为std::exception 抛出。
#include <iostream>
int main()
{
try {
std::string message=\"! Something went wrong.\";
throw std::exception(message.c_str());
}
catch (std::exception ex) {
std::cerr << ex.what() << std::endl;
}
}
-
不,不是,而且我很确定这个问题之前已经回答过了。
-
在您的问题中,您可能想用几句话解释为什么您担心这可能是一个坏主意。
-
撇开悬空指针不谈,
std::exception没有带参数的构造函数,除了它的复制构造函数。