Função SetErrorMode (errhandlingapi.h)

Controla se o sistema manipulará os tipos especificados de erros graves ou se o processo os manipulará.

Sintaxe

UINT SetErrorMode(
  [in] UINT uMode
);

Parâmetros

[in] uMode

O modo de erro do processo. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
0
Use o padrão do sistema, que é exibir todas as caixas de diálogo de erro.
SEM_FAILCRITICALERRORS
0x0001
O sistema não exibe a caixa de mensagem critical-error-handler. Em vez disso, o sistema envia o erro para o processo de chamada.

A prática recomendada é que todos os aplicativos chamem a função SetErrorMode em todo o processo com um parâmetro SEM_FAILCRITICALERRORS na inicialização. Isso é serve para impedir que as caixas de diálogo de modo de erro desloquem o aplicativo.

SEM_NOALIGNMENTFAULTEXCEPT
0x0004
O sistema corrige automaticamente falhas de alinhamento de memória e as torna invisíveis para o aplicativo. Ele faz isso para o processo de chamada e todos os processos descendentes. Esse recurso só tem suporte em determinadas arquiteturas de processador. Para obter mais informações, consulte a seção Comentários.

Depois que esse valor é definido para um processo, as tentativas subsequentes de limpar o valor são ignoradas.

SEM_NOGPFAULTERRORBOX
0x0002
O sistema não exibe a caixa de diálogo Relatório de Erros do Windows.
SEM_NOOPENFILEERRORBOX
0x8000
A função OpenFile não exibe uma caixa de mensagem quando falha ao localizar um arquivo. Em vez disso, o erro é retornado ao chamador. Esse modo de erro substitui o sinalizador OF_PROMPT .

Retornar valor

O valor retornado é o estado anterior dos sinalizadores de bits no modo de erro.

Comentários

Cada processo tem um modo de erro associado que indica ao sistema como o aplicativo responderá a erros graves. Um processo filho herda o modo de erro de seu processo pai. Para recuperar o modo de erro do processo, use a função GetErrorMode .

Como o modo de erro está definido para todo o processo, você deve garantir que os aplicativos multi-threaded não definam sinalizadores de modo de erro diferentes. Fazer isso pode levar a tratamento de erros inconsistentes.

O sistema não torna as falhas de alinhamento visíveis para um aplicativo em todas as arquiteturas de processador. Portanto, especificar SEM_NOALIGNMENTFAULTEXCEPT não é um erro nessas arquiteturas, mas o sistema é livre para ignorar silenciosamente a solicitação. Isso significa que sequências de código como as seguintes nem sempre são válidas em computadores x86:

C++
SetErrorMode(SEM_NOALIGNMENTFAULTEXCEPT); 
fuOldErrorMode = SetErrorMode(0); 
ASSERT(fuOldErrorMode == SEM_NOALIGNMENTFAULTEXCEPT);
Itanium: Um aplicativo deve chamar explicitamente SetErrorMode com SEM_NOALIGNMENTFAULTEXCEPT para que o sistema corrija automaticamente falhas de alinhamento. A configuração padrão é que o sistema torne as falhas de alinhamento visíveis para um aplicativo.

Visual Studio 2005: Ao declarar um ponteiro para uma estrutura que pode não ter dados alinhados, você pode usar o __unaligned palavra-chave para indicar que o tipo deve ser lido um byte por vez. Para obter mais informações, consulte Alinhamento de dados do Windows.

Windows 7: Os chamadores devem favorecer SetThreadErrorMode em vez de SetErrorMode , pois ele é menos disruptivo para o comportamento normal do sistema.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho errhandlingapi.h (inclua Windows.h)
Biblioteca Kernel32.lib
DLL Kernel32.dll

Confira também

Funções do tratamento de erros

Modo de erro

GetErrorMode

SetThreadErrorMode