Zpracování synchronních chyb Configuration Manager pomocí spravovaného kódu
Chcete-li zpracovat chybu Configuration Manager, která je vyvolána v synchronním dotazu, zachytíte výjimku SmsQueryException. Vzhledem k tomu, že tuto výjimku zachytí také SMS_Exception], můžete ji zachytit i výjimku SmsConnectionException ve stejném bloku catch.
Pokud je výjimka zachycená v SMS_Exception výjimka SmsQueryException, můžete ji použít k získání základní __ExtendedException
nebo SMS_ExtendedException
. Vzhledem k tomu, že spravovaná knihovna poskytovatele serveru SMS tyto výjimky nezabalí, budete muset pro přístup k nim použít objekt System.Management oboru názvů ManagementException .
Poznámka
Pro přehlednost většina příkladů v této dokumentaci jednoduše znovu vyvolá výjimky. Pokud potřebujete podrobnější informace o výjimce, můžete je nahradit následujícím příkladem.
Zpracování chyby synchronního dotazu
Napište kód pro přístup k poskytovateli serveru SMS.
Pomocí následujícího příkladu kódu zachyťte výjimky SmsQueryException a SmsConnectionException .
Příklad
Následující ukázková funkce jazyka C# se pokusí otevřít neexistující SMS_Package
balíček. V obslužné rutině výjimky kód určuje, jaký typ chyby byl vyvolán, a zobrazí její informace.
Informace o volání ukázkového kódu najdete v tématu Volání Configuration Manager fragmentů kódu.
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);
}
}
}
Ukázková metoda má následující parametry:
Parametr | Typ | Popis |
---|---|---|
connection |
- WqlConnectionManager |
Platné připojení k poskytovateli. |
Kompilace kódu
Tento příklad jazyka C# vyžaduje:
Obory názvů
Systému
System.collections.generic
System.text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.management
System.componentmodel
Sestavení
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.management
Robustní programování
Další informace o zpracování chyb najdete v tématu Informace o chybách Configuration Manager.
Viz taky
Informace o chybáchZpracování Configuration Manager asynchronních chyb pomocí spravovaného kódu