C++ C++;无法捕获长度错误异常

C++ C++;无法捕获长度错误异常,c++,exception,C++,Exception,当我使用: throw "something happen" __cxa_throw可以捕获此异常 但如果我写: std::string s; s.resize(-1); __cxa_-throw抓不住它; 我想知道为什么以及如何修复它 更新:抱歉,描述不完整。我的目的是了解崩溃堆栈何时发生 std::string s; s.resize(-1); 有人打电话来。 如果它不抛出任何异常,我该怎么办 对不起,我忘了附上照片。 第一页是 std::string s; s.resize(-1);

当我使用:

throw "something happen"
__cxa_throw可以捕获此异常

但如果我写:

std::string s; s.resize(-1);
__cxa_-throw抓不住它; 我想知道为什么以及如何修复它

更新:抱歉,描述不完整。我的目的是了解崩溃堆栈何时发生

std::string s; s.resize(-1);
有人打电话来。 如果它不抛出任何异常,我该怎么办

对不起,我忘了附上照片。 第一页是

std::string s; s.resize(-1);
第二个是

throw "something happen"

成员函数在您的情况下不会引发异常,因为
-1
的整数文本始终转换为
std::size\t
类型的最大无符号值,该类型是函数接受的类型,可能导致32位平台的
4294967295
或64位平台的
18446744073709551615
平台或类似平台。可以抛出的异常是。这篇文章有更多信息:

捕获异常时如何使用
\ucxa\u throw
?你能展示一下你用来测试这个的一些代码吗?你说的“\uucxa\uthrow不能捕获它”是什么意思?请发布你用来捕获它的代码。第一个代码示例和第二个代码示例之间有什么联系?第二个代码示例不包含在内。当您将空字符串“收缩”为-1时,您认为会发生什么情况?
resize(-1)
不会像您认为的那样做。提示:
resize
的参数是
size\u t
,它是unsignedThanks。我修改了这个问题,希望你能告诉我应该怎么做。我不太确定是否抛出了任何异常,所以我弄不明白为什么函数u cxa\u throw无法捕获它。实际上,系统似乎没有调用函数。