Compartilhar via


Função SetErrorMode (errhandlingapi.h)

Controla se o sistema ou o processo manipula os tipos de erro graves especificados.

Sintaxe

UINT SetErrorMode(
  [in] UINT uMode
);

Parâmetros

[in] uMode

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

Valor Significado
0
Use o padrão do sistema, que exibe todas as caixas de diálogo de erro.
SEM_FAILCRITICALERRORS
0x0001
O sistema não exibe a caixa de mensagem crítico-erro-manipulador. 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 de SEM_FAILCRITICALERRORS na inicialização. Isso é para impedir que as caixas de diálogo do modo de erro desamarmem 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 invoca o Relatório de Erros do Windows. Para desabilitar a interface do usuário do Relatório de Erros do Windows, chame WerSetFlags com o sinalizador WER_FAULT_REPORTING_NO_UI.
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 de OF_PROMPT.

Valor de retorno

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

Observações

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 com vários threads não definam diferentes sinalizadores de modo de erro. Isso pode levar a um tratamento de erro inconsistente.

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 a palavra-chave __unaligned para indicar que o tipo deve ser lido um byte por vez. Para obter mais informações, consulte de Alinhamento de Dados do Windows.

Windows 7: os chamadores de devem favorecer SetThreadErrorMode em SetErrorMode, pois ela é menos disruptiva para o comportamento normal do sistema.

Requisitos

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

Consulte também

Funções de tratamento de erros

modo de erro

GetErrorMode

SetThreadErrorMode