控制台应用程序中的 C++ 异常?

标签 c++ exception console

这可能是个愚蠢的问题,但我想在控制台应用程序(使用新的 Win32 控制台应用程序项目向导创建)中使用 C++ 异常。我尝试了下面显示的主题的许多变体,但并不高兴:

try {
  // do something that may throw an exception
}
catch( exception e ) {
  printf( "Exception: %s\n", e.what );
}

编译器提示找不到标识符“exception”。
我尝试了各种方法来代替“异常”(例如,“IOException”、“bad_alloc”),但没有成功。

我在项目配置中尝试了不同的异常相关选项,同样没有成功。
能够使用

编译它
catch(...) {

但这没有给我任何关于异常的信息。

问题:
在非 .NET 应用程序中是否甚至允许异常?
我是否缺少一些包含文件?
我做过或没做过的其他(愚蠢的)事情?

最佳答案

Are exceptions even allowed in non-.NET apps?

是的,他们是。

Am I missing some include file?

看起来您缺少必要的 #include <exception>和/或带有 std:: 的命名空间范围.

Some other (dumb) thing I did or didn't do?

捕获异常的更好方法是通过常量引用顺便说一句:

#include <exception>

int main() {
    try {
      // do something that may throw an exception
    }
    catch(const std::exception& e ) {
        printf( "Exception: %s\n", e.what );
    }
}

关于控制台应用程序中的 C++ 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39980440/

相关文章:

python - Boost::python 和 Eigen/dense 造成段错误

c++ - 如何使用 std :string arguments? 迭代可变参数函数

java - Axis2 Web 服务和 Eclipse WSDL 创作 : Adding an axis fault to wsdl causes exception when running wsdl2java

java - Java 中的异常翻译与异常链接

javascript - node.js 在控制台显示 "undefined"

javascript - 在运行时动态创建和存储算法

c++ - shared_ptr : what's it used for

c++ - 类成员初始化器抛出的异常是否应该调用 std::terminate()?

node.js - 在 EJS 中使用 console.log

python - 在 python 脚本执行期间,终端上有一个正在运行的时钟