Compartilhar via


Função RaiseException (errhandlingapi.h)

Gera uma exceção no thread de chamada.

Sintaxe

void RaiseException(
  [in] DWORD           dwExceptionCode,
  [in] DWORD           dwExceptionFlags,
  [in] DWORD           nNumberOfArguments,
  [in] const ULONG_PTR *lpArguments
);

Parâmetros

[in] dwExceptionCode

Um código de exceção definido pelo aplicativo da exceção que está sendo gerada. A expressão de filtro e o bloco de manipulador de exceção de um manipulador de exceção podem usar a função GetExceptionCode para recuperar esse valor.

Observe que o sistema limpará o bit 28 de dwExceptionCode antes de exibir uma mensagem Este bit é um bit de exceção reservado, usado pelo sistema para suas próprias finalidades.

[in] dwExceptionFlags

Os sinalizadores de exceção. Isso pode ser zero para indicar uma exceção contínua ou EXCEPTION_NONCONTINUABLE para indicar uma exceção nãocontinuável. Qualquer tentativa de continuar a execução após uma exceção não contínua causa a exceção EXCEPTION_NONCONTINUABLE_EXCEPTION.

[in] nNumberOfArguments

O número de argumentos na matriz lpArguments . Esse valor não deve exceder EXCEPTION_MAXIMUM_PARAMETERS. Esse parâmetro será ignorado se lpArguments for NULL.

[in] lpArguments

Uma matriz de argumentos. Este parâmetro pode ser NULL. Esses argumentos podem conter todos os dados definidos pelo aplicativo que precisam ser passados para a expressão de filtro do manipulador de exceção.

Retornar valor

Essa função não retorna um valor.

Comentários

A função RaiseException permite que um processo use o tratamento de exceção estruturado para lidar com exceções privadas geradas por software e definidas pelo aplicativo.

Gerar uma exceção faz com que o dispatcher de exceção passe pela seguinte pesquisa por um manipulador de exceção:

  1. O sistema primeiro tenta notificar o depurador do processo, se houver.
  2. Se o processo não estiver sendo depurado ou se o depurador associado não manipular a exceção, o sistema tentará localizar um manipulador de exceção baseado em quadro pesquisando os quadros de pilha do thread no qual a exceção ocorreu. O sistema pesquisa primeiro o quadro de pilha atual e, em seguida, prossegue para trás por meio de quadros de pilha anteriores.
  3. Se nenhum manipulador baseado em quadro puder ser encontrado ou nenhum manipulador baseado em quadro manipular a exceção, o sistema fará uma segunda tentativa de notificar o depurador do processo.
  4. Se o processo não estiver sendo depurado ou se o depurador associado não manipular a exceção, o sistema fornecerá tratamento padrão com base no tipo de exceção. Na maioria das exceções, a ação padrão é chamar a função ExitProcess.

Os valores especificados nos parâmetros dwExceptionCode, dwExceptionFlags, nNumberOfArguments e lpArguments podem ser recuperados na expressão de filtro de um manipulador de exceção baseado em quadro chamando a função GetExceptionInformation . Um depurador pode recuperar esses valores chamando a função WaitForDebugEvent .

Exemplos

Para obter um exemplo, confira Usando um manipulador de exceção.

Requisitos

   
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

ExitProcess

GetExceptionCode

GetExceptionInformation

Funções do tratamento de exceções estruturado

Visão geral da manipulação de exceção estruturada

WaitForDebugEvent

APIs Vertdll disponíveis em enclaves de VBS