Jak obsługiwać błędy synchroniczne Configuration Manager przy użyciu kodu zarządzanego

Aby obsłużyć błąd Configuration Manager zgłaszany w zapytaniu synchronicznym, należy złapać wyjątek SmsQueryException. Ponieważ ten wyjątek jest również przechwytywany przez SMS_Exception], można go złapać i wyjątek SmsConnectionException w tym samym bloku catch.

Jeśli wyjątek przechwycony w SMS_Exception to SmsQueryException, możesz użyć go, aby przejść do obiektu bazowego __ExtendedException lub SMS_ExtendedException. Ponieważ zarządzana biblioteka dostawcy programu SMS nie zawija tych wyjątków, musisz użyć obiektu System.Management Namespace ManagementException , aby uzyskać do nich dostęp.

Uwaga

Aby uzyskać jasność, większość przykładów w tej dokumentacji po prostu ponownie zgłasza wyjątki. Możesz zastąpić je poniższym przykładem, jeśli chcesz uzyskać więcej informacji o wyjątkach.

Aby obsłużyć błąd zapytania synchronicznego

  1. Napisz kod, aby uzyskać dostęp do dostawcy programu SMS.

  2. Użyj następującego przykładowego kodu, aby przechwytywać wyjątki SmsQueryException i SmsConnectionException .

Przykład

Następująca przykładowa funkcja języka C# próbuje otworzyć nieistniejący SMS_Package pakiet. W procedurze obsługi wyjątków kod określa, jaki typ błędu został zgłoszony, i wyświetla jego informacje.

Aby uzyskać informacje na temat wywoływania przykładowego kodu, zobacz Wywoływanie fragmentów kodu Configuration Manager.

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);  
        }  
    }  
}  

Przykładowa metoda ma następujące parametry:

Parametr Wpisać Opis
connection - WqlConnectionManager Prawidłowe połączenie z dostawcą.

Kompilowanie kodu

Ten przykład języka C# wymaga:

Obszary nazw

System

System.collections.generic

System.text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.componentmodel

Zestawu

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Niezawodne programowanie

Aby uzyskać więcej informacji na temat obsługi błędów, zobacz Informacje o błędach Configuration Manager.

Zobacz też

Informacje obłędach Jak obsługiwać błędy asynchroniczne Configuration Manager przy użyciu kodu zarządzanego