Comment gérer Configuration Manager erreurs synchrones à l’aide du code managé

Pour gérer une erreur Configuration Manager qui est générée dans une requête synchrone, vous interceptez l’exception SmsQueryException. Étant donné que cette exception est également interceptée par SMS_Exception], vous pouvez l’intercepter et l’exception SmsConnectionException dans le même bloc catch.

Si l’exception interceptée dans un SMS_Exception est une SmsQueryException, vous pouvez l’utiliser pour accéder au sous-jacent __ExtendedException ou SMS_ExtendedExceptionà . Étant donné que la bibliothèque fournisseur SMS managée n’encapsule pas ces exceptions, vous devez utiliser l’objet ManagementException de l’espace de noms System.Management pour y accéder.

Remarque

Pour plus de clarté, la plupart des exemples de cette documentation lèvent simplement de nouveau des exceptions. Vous pouvez les remplacer par l’exemple suivant si vous souhaitez obtenir des informations plus informatives sur les exceptions.

Pour gérer une erreur de requête synchrone

  1. Écrivez du code pour accéder au fournisseur SMS.

  2. Utilisez l’exemple de code suivant pour intercepter les exceptions SmsQueryException et SmsConnectionException .

Exemple

L’exemple de fonction C# suivant tente d’ouvrir un package inexistant SMS_Package . Dans le gestionnaire d’exceptions, le code détermine le type d’erreur qui a été déclenché et affiche ses informations.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code Configuration Manager.

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);  
        }  
    }  
}  

L’exemple de méthode a les paramètres suivants :

Paramètre Type Description
connection - WqlConnectionManager Connexion valide au fournisseur.

Compilation du code

Cet exemple C# nécessite :

Espaces de noms

Système

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Programmation robuste

Pour plus d’informations sur la gestion des erreurs, consultez À propos des erreurs Configuration Manager.

Voir aussi

À propos des erreursComment gérer Configuration Manager erreurs asynchrones à l’aide du code managé