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

Pour traiter une erreur du Configuration Manager qui est déclenchée dans une requête synchrone, vous interceptez l’exception SmsQueryException. Comme cette exception est également interceptée par SMS_Exception], vous pouvez l’intercepter, ainsi que l’exception SmsConnectionException , dans le même bloc d’arrêt.

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

Remarque

Pour plus de clarté, la plupart des exemples de cette documentation ne font que répéter 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. Écrire 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é générée et affiche ses informations.

Pour plus d’informations sur l’appel de l’exemple de code, consultez Appel d’extraits de code de 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 contient les paramètres suivants :

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

Compilation du code

Cet exemple C# requiert :

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, voir À propos des erreurs du Configuration Manager.

Voir aussi

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