Compartilhar via


Método Marshal.ThrowExceptionForHR (Int32)

 

Publicado: agosto de 2016

Dica

The .NET API Reference documentation has a new home. Visit the .NET API Browser on docs.microsoft.com to see the new experience.

Aciona uma exceção com uma valor HRESULT de falha específico.

Namespace:   System.Runtime.InteropServices
Assembly:  mscorlib (em mscorlib.dll)

Sintaxe

[SecurityCriticalAttribute]
public static void ThrowExceptionForHR(
    int errorCode
)
public:
[SecurityCriticalAttribute]
static void ThrowExceptionForHR(
    int errorCode
)
[<SecurityCriticalAttribute>]
static member ThrowExceptionForHR : 
        errorCode:int -> unit
<SecurityCriticalAttribute>
Public Shared Sub ThrowExceptionForHR (
    errorCode As Integer
)

Parâmetros

  • errorCode
    Type: System.Int32

    O HRESULT correspondente à exceção desejada.

Comentários

Esse método cria um objeto de exceção de falha HRESULT especificado. Se o HRESULT é 0 ou positivo (um código de êxito), o método retornará sem criar ou gerar uma exceção.

Observe que o ThrowExceptionForHR(Int32) método retornará uma exceção com base no IErrorInfo interface do thread atual se um for definido. Quando isso acontece, o errorCode parâmetro é ignorado.

Algumas falhas HRESULTs mapeiam para exceções definidas, enquanto outros não. Se o HRESULT é mapeado para uma exceção de definido, ThrowExceptionForHR cria uma instância da exceção e lança-lo. Caso contrário, ele cria uma instância de COMException, inicializa o campo de código de erro com o HRESULT e gera essa exceção. Quando ThrowExceptionForHR é invocado, ele tenta recuperar informações adicionais sobre o erro usando o gerenciado GetErrorInfo função.

Para o mapeamento de cada HRESULT para sua classe de exceção comparáveis no .NET Framework, consulte Como mapear HRESULTs e exceções.

Ocasionalmente, ThrowExceptionForHR pode retornar uma exceção de uma chamada anterior de COM. Nesse caso, você pode usar a seguinte solução e passar IntPtr(-1) como o segundo parâmetro (errorInfo):

[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
public static void ThrowExceptionForHR(interrorCode,IntPtrerrorInfo)

Segurança

SecurityCriticalAttribute

requires full trust for the immediate caller. This member cannot be used by partially trusted or transparent code.

Informações de Versão

Plataforma Universal do Windows
Disponível desde 8
.NET Framework
Disponível desde 1.1
Biblioteca de Classes Portátil
Com suporte no: plataformas portáteis do .NET
Silverlight
Disponível desde 2.0
Windows Phone Silverlight
Disponível desde 7.0
Windows Phone
Disponível desde 8.1

Confira Também

COMException
ThrowExceptionForHR Sobrecarga
Classe Marshal
Namespace System.Runtime.InteropServices

Retornar ao início