首页 > 解决方案 > 为什么在 try 块中访问未声明的变量不会导致 C++ 中的异常

问题描述

我正在修改我的 C++ 技能。在那期间,我遇到了异常处理,我注意到未声明的变量不会导致异常,这对我来说很奇怪。

我期待这个程序以未捕获的异常终止(如果编译器设置正确),因为在 try 块中我试图访问一个未声明的变量。有人可以帮我理解为什么我没有得到(未捕获的)异常吗?

#include <iostream>
using namespace std;

void mightGoWrong() {
    bool error = true;

    if (error) {
        throw 8;
    }
}

int main () {

        try {
            mightGoWrong;
        }
        catch(int error) {
            cout << "The error code is: " << error << endl;
        }


        cout << "Still running" << endl;

        return 0;
}

标签: c++exception-handling

解决方案


mightGoWrong;-block 中的-statementtry不是指变量而是指函数mightGoWrong();请注意,您不调用该函数,而只是使用其名称而不将其分配给某物;众所周知mightGoWrong,它只是一个“无操作”,在编译时可能会产生一些警告,但不会产生错误,并且 - 因为它不会调用该函数 - 它不会在运行时抛出任何东西。

试试看mightGoWrong()会发生什么。


推荐阅读