“抛出”使程序崩溃,但编译正常

问题描述 投票:0回答:2

我的程序编译得很好,但每次调用 throw (不在 try...catch 块内)时都会崩溃。

以下是用于项目中所有文件的类似命令的参数:

mingw32-g++.exe -fexceptions -DWIN32 -D_WINDOWS -D_MBCS -DNO_SOCKLEN_T -DDONTUSEMEMMANAGER  -Wall -g -W -fexceptions -DDEBUG

(我知道 Wall 使得 W 变得不必要,并且我在那里有两次 -f 异常。)

编辑:我知道这种行为实际上没有任何问题。问题是,它曾经可以工作,也就是说程序不会崩溃。但前几天我更改了一些文件,再次编译,突然崩溃了

c++ gcc
2个回答
6
投票

嗯,这是预期的行为。标准说[except.handle]:

如果没有找到匹配的处理程序,则调用函数 std::terminate() ; [...]


4
投票

这称为未处理的异常。预期的行为是程序应该退出。

© www.soinside.com 2019 - 2024. All rights reserved.