阅读544 返回首页    go 阿里云 go 技术社区[云栖]


VS 2017 C++使用 try

手头有本C++基础课本,“The Programming Principles and Practice Using C++" ,以Visual Studio 2005 为背景讲述,在讲到关于代码中的 ”error and debugging"中,使用了如下示例代码:

#include "../../std_lib_facilities.h"   // 书本给出的头文件,可以完成基本功能
int main()
try {
string s = "Success!\n";              //长度为9的字符串
for (int i=0; i<10; ++i)               // exception 所在,读取字符串 越界
cout << s[i];
keep_window_open();               
return 0;
}
catch (exception& e) {
cerr << "error: " << e.what() << '\n';          // 输出错误信息
keep_window_open();                                 //阻止运行窗口关闭
return 1;
}
catch (...) {
cerr << "Oops: unknown exception!\n";
keep_window_open();
return 2;
}

其在 VS 2005 上的结果为:

Success! 

error: Range error: 9

……

而在VS 2017 上的结果:

Success!

(直接跳转到开发环境中,打开相关的底层代码(与string相关),并在旁边使用“窗口标签”提示,代码出错及原因)

请问这是什么原因呢?如何使VS 2017上的运行情况和VS 2005上相同呢?



最后更新:2017-08-25 16:02:25

  上一篇:go 正确登录密码登录时显示错误
  下一篇:go 为何微软鼠标和键盘中心无法识别出Sculpt舒适滑控鼠标和舒适曲线键盘3000?