Marshal.ThrowExceptionForHR Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Aciona uma exceção com uma valor HRESULT de falha específico.
Sobrecargas
ThrowExceptionForHR(Int32) |
Aciona uma exceção com uma valor HRESULT de falha específico. |
ThrowExceptionForHR(Int32, IntPtr) |
Gera uma exceção com uma falha específica HRESULT com base na interface IErrorInfo especificada. |
ThrowExceptionForHR(Int32)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Aciona uma exceção com uma valor HRESULT de falha específico.
public:
static void ThrowExceptionForHR(int errorCode);
[System.Security.SecurityCritical]
public static void ThrowExceptionForHR (int errorCode);
public static void ThrowExceptionForHR (int errorCode);
[<System.Security.SecurityCritical>]
static member ThrowExceptionForHR : int -> unit
static member ThrowExceptionForHR : int -> unit
Public Shared Sub ThrowExceptionForHR (errorCode As Integer)
Parâmetros
- errorCode
- Int32
O HRESULT correspondente à exceção desejada.
- Atributos
Comentários
Esse método cria um objeto de exceção para a falha especificada HRESULT. Se o HRESULT for 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 retorna uma exceção com base na interface IErrorInfo do thread atual se um estiver definido. Quando isso acontece, o errorCode
parâmetro é ignorado.
Algumas HRESULTs de falha são mapeadas para exceções definidas, enquanto outras não. Se o HRESULT for mapeado para uma exceção definida, ThrowExceptionForHR criará uma instância da exceção e a lançará. 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 extras sobre o erro usando a função GetErrorInfo não gerenciada.
Para obter o mapeamento de cada HRESULT para sua classe de exceção comparável no .NET Framework, consulte Como mapear HRESULTs e exceções.
Ocasionalmente, ThrowExceptionForHR pode retornar uma exceção de uma chamada COM anterior. Nesse caso, você pode usar a seguinte solução alternativa e passar IntPtr(-1)
como o segundo parâmetro (errorInfo
):
public static void ThrowExceptionForHR(interrorCode,IntPtrerrorInfo)
Confira também
Aplica-se a
ThrowExceptionForHR(Int32, IntPtr)
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
- Origem:
- Marshal.cs
Gera uma exceção com uma falha específica HRESULT com base na interface IErrorInfo especificada.
public:
static void ThrowExceptionForHR(int errorCode, IntPtr errorInfo);
[System.Security.SecurityCritical]
public static void ThrowExceptionForHR (int errorCode, IntPtr errorInfo);
public static void ThrowExceptionForHR (int errorCode, IntPtr errorInfo);
[<System.Security.SecurityCritical>]
static member ThrowExceptionForHR : int * nativeint -> unit
static member ThrowExceptionForHR : int * nativeint -> unit
Public Shared Sub ThrowExceptionForHR (errorCode As Integer, errorInfo As IntPtr)
Parâmetros
- errorCode
- Int32
O HRESULT correspondente à exceção desejada.
- errorInfo
-
IntPtr
nativeint
Um ponteiro para a interface IErrorInfo que fornece mais informações sobre o erro. Você pode especificar IntPtr(0)
para usar a interface IErrorInfo atual ou IntPtr(-1)
para ignorar a interface IErrorInfo atual e construir a exceção com base apenas no código de erro.
- Atributos
Comentários
Esse método cria um objeto de exceção para a falha especificada HRESULT. Se o HRESULT for 0 ou positivo (um código de êxito), o método retornará sem criar ou gerar uma exceção.
O ThrowExceptionForHR método libera o errorInfo
parâmetro , diminuindo a contagem de referência COM da interface IErrorInfo .
Observe que o ThrowExceptionForHR método retorna uma exceção com base na interface IErrorInfo do thread atual se um estiver definido. Quando isso acontece, o errorCode
parâmetro é ignorado.
Algumas HRESULTs de falha são mapeadas para exceções definidas, enquanto outras não. Se o HRESULT for mapeado para uma exceção definida, ThrowExceptionForHR criará uma instância da exceção e a lançará. Caso contrário, ele cria uma instância de System.Runtime.InteropServices.COMException, inicializa o campo de código de erro com o HRESULT e gera essa exceção. O errorInfo
parâmetro é usado para recuperar informações extras sobre o erro.
Para obter o mapeamento de cada HRESULT para sua classe de exceção comparável no .NET Framework, consulte Como mapear HRESULTs e exceções.