SetErrorMode 函数 (errhandlingapi.h)
控制系统是否将处理指定类型的严重错误,或者进程是否会处理这些错误。
语法
UINT SetErrorMode(
[in] UINT uMode
);
参数
[in] uMode
进程错误模式。 此参数可使用以下一个或多个值。
值 | 含义 |
---|---|
|
使用系统默认值,即显示所有错误对话框。 |
|
系统不显示严重错误处理程序消息框。 相反,系统会将错误发送到调用进程。
最佳做法是,所有应用程序在启动时使用参数 SEM_FAILCRITICALERRORS 调用进程范围的 SetErrorMode 函数。 这是为了防止错误模式对话框挂起应用程序。 |
|
系统会自动修复内存对齐错误,并使这些错误对应用程序不可见。 它对调用进程和任何后代进程执行此操作。 此功能仅受某些处理器体系结构支持。 有关详细信息,请参见“备注”部分。
为进程设置此值后,将忽略后续尝试清除该值。 |
|
系统不显示Windows 错误报告对话框。 |
|
OpenFile 函数在找不到文件时不显示消息框。 相反,错误将返回给调用方。 此错误模式将替代 OF_PROMPT 标志。 |
返回值
返回值是错误模式位标志的先前状态。
注解
每个进程都有一个关联的错误模式,该模式向系统指示应用程序将如何响应严重错误。 子进程继承其父进程的错误模式。 若要检索进程错误模式,请使用 GetErrorMode 函数。
由于为整个过程设置了错误模式,因此必须确保多线程应用程序不会设置不同的错误模式标志。 这样做可能会导致错误处理不一致。
系统不会使所有处理器体系结构上的应用程序都能看到对齐错误。 因此,指定SEM_NOALIGNMENTFAULTEXCEPT不是此类体系结构上的错误,但系统可以无提示地忽略该请求。 这意味着,如下所示的代码序列在 x86 计算机上并不总是有效:
C++ |
---|
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); fuOldErrorMode = SetErrorMode(0); ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT); |
Visual Studio 2005: 声明指向可能没有对齐数据的结构的指针时,可以使用__unaligned关键字 (keyword) 来指示必须一次读取一个字节的类型。 有关详细信息,请参阅 Windows 数据对齐。
Windows 7: 调用方应优先使用 SetThreadErrorMode ,而优先于 SetErrorMode ,因为它对系统的正常行为造成的干扰较小。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [桌面应用 | UWP 应用] |
最低受支持的服务器 | Windows Server 2003 [桌面应用 | UWP 应用] |
目标平台 | Windows |
标头 | errhandlingapi.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈