gpt4 book ai didi

c++ - 为什么我的 UnhandledExceptionFilter 没有被简单地除以零调用?

转载 作者:太空狗 更新时间:2023-10-29 23:40:17 26 4
gpt4 key购买 nike

我正在使用以下 MSVC++ 控制台应用程序代码(在 Windows 8.1、Release、Win32 上运行)尝试向我返回顶级异常:

#include "stdafx.h"
#include <Windows.h>
#include <iostream>

using namespace std;

LONG WINAPI UnhandledExceptionFilter(PEXCEPTION_POINTERS exception)
{
printf("Got an unhandled exception.");
return EXCEPTION_CONTINUE_SEARCH;
}

int _tmain(int argc, _TCHAR* argv[])
{
SetUnhandledExceptionFilter(UnhandledExceptionFilter);
int a = 0;
int b = 0;
int c = a / b;
cin.get();
return 0;
}

我的 UnhandledExceptionFilter 实际上似乎从未在本示例中抛出的被零除异常上被调用,否则我希望显示“Got an unhandled exception”日志消息向上。这是为什么?

最佳答案

整数除以零是未定义的行为。如果一个实现选择为此(或任何其他未定义的行为)引发异常,那很好。如果实现选择 为某些未定义的行为引发异常,那也很好。当遇到未定义的行为时,无论实现做什么都可以。这不是他们的问题。

显然 MSVC++ 在 Windows 8.1 上运行,Win32 不会在被零除时引发异常。

你永远不应该期望未定义的行为会导致预期的结果。

关于c++ - 为什么我的 UnhandledExceptionFilter 没有被简单地除以零调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22493078/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com