Partilhar via


Como Lidar com Erros Síncronos do Configuration Manager ao Utilizar o Código Gerido

Para lidar com um erro do Gestor de Configuração que é levantado numa consulta sincronizada, apanha a exceção SmsQueryException. Como esta exceção também é apanhada por SMS_Exception], pode apanhá-la e a exceção SmsConnectionException no mesmo bloco de captura.

Se a exceção que é apanhada num SMS_Exception for um SmsQueryException,pode usá-lo para chegar ao subjacente __ExtendedException ou SMS_ExtendedException . Como a biblioteca de fornecedores de SMS gerida não encerra estas exceções, terá de utilizar o objeto System.Managementspace ManagementException para aceder às mesmos.

Nota

Para maior clareza, a maioria dos exemplos nesta documentação simplesmente relançam exceções. Pode substituí-los pelo exemplo seguinte se quiser informações de exceção mais informativas.

Para lidar com um erro de consulta sincronizado

  1. Escreva código para aceder ao Fornecedor DE SMS.

  2. Utilize o seguinte código de exemplo para apanhar as exceções SmsQueryException e SmsConnectionException.

Exemplo

A função de exemplo C# a seguir tenta abrir um SMS_Package pacote inexistente. No manipulador de exceções, o código determina que tipo de erro foi levantado e exibe as suas informações.

Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.

public void ExerciseException(WqlConnectionManager connection)  
{  
    try  
    {  

        IResultObject package = connection.GetInstance(@"SMS_Package.PackageID='UNKNOWN'");  
        Console.WriteLine("Package Name: " + package["Name"].StringValue);  
        Console.WriteLine("Package Description: " + package["Description"].StringValue);  

    }  
    catch (SmsException e)  
    {  
        if (e is SmsQueryException)  
        {  
            SmsQueryException queryException = (SmsQueryException)e;  
            Console.WriteLine(queryException.Message);  

            // Get either the __ExtendedStatus or SMS_ExtendedStatus object and display various properties.  
            ManagementException mgmtExcept = queryException.InnerException as ManagementException;  

            if (mgmtExcept != null)  
            {  
                if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "SMS_ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("Configuration Manager provider exception");  
                }  

                else if (string.Equals(mgmtExcept.ErrorInformation.ClassPath.ToString(), "__ExtendedStatus", StringComparison.OrdinalIgnoreCase) == true)  
                {  
                    Console.WriteLine("WMI exception");  
                }  
                Console.WriteLine(mgmtExcept.ErrorCode.ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ParameterInfo"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["Operation"].ToString());  
                Console.WriteLine(mgmtExcept.ErrorInformation["ProviderName"].ToString());  
            }  

        }  
        if (e is SmsConnectionException)  
        {  
            Console.WriteLine("There was a connection error :" + ((SmsConnectionException)e).Message);  
            Console.WriteLine(((SmsConnectionException)e).ErrorCode);  
        }  
    }  
}  

O método exemplo tem os seguintes parâmetros:

Parâmetro Tipo Description
connection - WqlConnectionManager Uma ligação válida ao fornecedor.

A Compilar o Código

Este exemplo C# requer:

Espaços de nomes

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

Sistema.Gestão

System.ComponentModel

Assemblagem

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

Sistema.Gestão

Programação Robusta

Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.

Consulte também

Sobre erros Como lidar com erros assíncronos do Gestor de Configuração através da utilização do Código Gerido