Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Als u een Configuration Manager-fout wilt afhandelen die wordt gegenereerd in een synchrone query, vangt u de SmsQueryException-uitzondering. Omdat deze uitzondering ook wordt onderschept door SMS_Exception], kunt u deze en de uitzondering SmsConnectionException in hetzelfde catch-blok vangen.
Als de uitzondering die in een SMS_Exception wordt opgevangen, een SmsQueryException is, kunt u deze gebruiken om naar de onderliggende __ExtendedException of SMS_ExtendedException. Omdat deze uitzonderingen niet zijn opgenomen in de beheerde SMS-providerbibliotheek, moet u het object System.Management-naamruimte ManagementException gebruiken om toegang te krijgen tot deze uitzonderingen.
Opmerking
Voor alle duidelijkheid: de meeste voorbeelden in deze documentatie gooien uitzonderingen gewoon opnieuw. U kunt deze vervangen door het volgende voorbeeld als u meer informatieve informatie over uitzonderingen wilt.
Een fout in een synchrone query afhandelen
Code schrijven om toegang te krijgen tot de sms-provider.
Gebruik de volgende voorbeeldcode om de uitzonderingen SmsQueryException en SmsConnectionException te vangen.
Voorbeeld
Met de volgende voorbeeldfunctie C# wordt geprobeerd een niet-bestaand SMS_Package pakket te openen. In de uitzonderings-handler bepaalt de code welk type fout is gegenereerd en wordt de bijbehorende informatie weergegeven.
Zie Codefragmenten van Configuration Manager aanroepen 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
Dit C#-voorbeeld vereist:
Naamruimten
Systeem
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
bijeenkomst
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Robuust programmeren
Zie Info over fouten in Configuration Manager voor meer informatie over foutafhandeling.
Zie ook
Informatie over foutenAsynchrone fouten in Configuration Manager afhandelen met behulp van beheerde code