Sdílet prostřednictvím


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

  1. Napište kód pro přístup k poskytovateli serveru SMS.

  2. 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