Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
Écrire 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é 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é