Szinkron Configuration Manager hibák kezelése felügyelt kód használatával
Egy szinkron lekérdezésben kiváltott Configuration Manager hiba kezeléséhez észleli az SmsQueryException kivételt. Mivel ezt a kivételt a SMS_Exception] is észleli, a kivételt és az SmsConnectionException kivételt ugyanabban a fogási blokkban is elkaphatja.
Ha az SMS_Exception észlelt kivétel egy SmsQueryException, akkor a használatával elérheti a mögöttes vagy SMS_ExtendedException
a elemet__ExtendedException
. Mivel a felügyelt SMS-szolgáltató kódtár nem burkolja ezeket a kivételeket, a Hozzáférésükhöz a System.Management névtér ManagementException objektumát kell használnia.
Megjegyzés:
Az egyértelműség kedvéért a jelen dokumentációban szereplő legtöbb példa egyszerűen csak a kivételek újradobása. Ha informatívabb kivételinformációkat szeretne, cserélje le őket az alábbi példára.
Szinkron lekérdezési hiba kezelése
Írjon kódot az SMS-szolgáltató eléréséhez.
Az alábbi példakóddal elkaphatja az SmsQueryException és az SmsConnectionException kivételt.
Példa
Az alábbi C#-példafüggvény nem létező SMS_Package
csomagot próbál megnyitni. A kivételkezelőben a kód határozza meg, hogy milyen típusú hiba lépett fel, és megjeleníti annak adatait.
A mintakód meghívásával kapcsolatos információkért lásd: Configuration Manager Kódrészletek hívása.
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);
}
}
}
A példametódus a következő paraméterekkel rendelkezik:
Paraméter | Típus | Leírás |
---|---|---|
connection |
- WqlConnectionManager |
Érvényes kapcsolat a szolgáltatóval. |
A kód fordítása
Ehhez a C#-példához a következőre van szükség:
Névterek
Rendszer
System.Collections.Generic
System.Text
Microsoft. ConfigurationManagement.ManagementProvider
Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine
System.Management
System.ComponentModel
Összeszerelés
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
System.Management
Robusztus programozás
A hibakezeléssel kapcsolatos további információkért lásd: A Configuration Manager hibák ismertetése.
Lásd még
Tudnivalók a Configuration Manageraszinkron hibák felügyelt kód használatával történő kezelésével kapcsolatos hibákról