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
Écrivez du code pour accéder au fournisseur SMS.
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é