How to Handle Configuration Manager Synchronous Errors by Using Managed Code (Sposób obsługi błędów synchronicznych programu Configuration Manager przy użyciu kodu zarządzanego)

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

Jeśli wyjątek, który jest przechwytywany w SMS_Exception jest SmsQueryException, można go użyć do uzyskania podstawowej __ExtendedException lub SMS_ExtendedException . Ponieważ zarządzana Biblioteka dostawcy programu SMS nie otacza tych wyjątków, do uzyskiwania dostępu do nich należy użyć obiektu Zarządzanie przestrzenią nazw System. Management.

Uwaga

W przypadku przejrzystości większość przykładów w tej dokumentacji po prostu ponownie generuje wyjątki. Można je zastąpić przy użyciu poniższego przykładu, jeśli potrzebne są bardziej szczegółowe informacje o wyjątku.

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

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

  2. Użyj następującego przykładowego kodu, aby przechwycić 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 programie obsługi wyjątków kod określa typ błędu, który został podniesiony i wyświetla informacje.

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

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 Typ Opis
connection - WqlConnectionManager Prawidłowe połączenie z dostawcą.

Kompilowanie kodu

Ten przykład w języku C# wymaga:

Przestrzenie nazw

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement. ManagementProvider

Microsoft.ConfigurationManagement. ManagementProvider. WqlQueryEngine

System. Management

System. ComponentModel

Zestaw

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 o błędach obsługi Configuration Manager błędów asynchronicznych za pomocą kodu zarządzanego