Synchrone Configuration Manager-fouten afhandelen met behulp van beheerde code
Als u een Configuration Manager fout wilt afhandelen die wordt gegenereerd in een synchrone query, ondervangt u de uitzondering SmsQueryException. Omdat deze uitzondering ook wordt ondervangen door SMS_Exception], kunt u deze en de uitzondering SmsConnectionException in hetzelfde catch-blok vangen.
Als de uitzondering die wordt opgevangen in een SMS_Exception een SmsQueryException is, kunt u deze gebruiken om naar de onderliggende __ExtendedException
of SMS_ExtendedException
te gaan. Omdat deze uitzonderingen niet worden verpakt in de bibliotheek van de beheerde SMS-provider, moet u het object System.Management-naamruimte ManagementException gebruiken om ze te openen.
Opmerking
Voor de duidelijkheid: in de meeste voorbeelden in deze documentatie worden uitzonderingen gewoon opnieuw weergegeven. U kunt deze vervangen door het volgende voorbeeld als u meer informatieve uitzonderingsinformatie wilt.
Een synchrone queryfout afhandelen
Schrijf code voor toegang tot de SMS-provider.
Gebruik de volgende voorbeeldcode om de uitzonderingen SmsQueryException en SmsConnectionException op te vangen.
Voorbeeld
Met de volgende C#-voorbeeldfunctie wordt geprobeerd een niet-bestaand SMS_Package
pakket te openen. In de uitzonderingshandler bepaalt de code welk type fout is gegenereerd en geeft de informatie weer.
Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.
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);
}
}
}
De voorbeeldmethode heeft de volgende parameters:
Parameter | Type | Beschrijving |
---|---|---|
connection |
- WqlConnectionManager |
Een geldige verbinding met de provider. |
De code compileren
Voor dit C#-voorbeeld is het volgende vereist:
Naamruimten
Systeem
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Vergadering
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Robuust programmeren
Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.
Zie ook
Over foutenHet afhandelen van Configuration Manager Asynchrone fouten met behulp van beheerde code