Freigeben über


Behandeln von Configuration Manager synchronen Fehlern mithilfe von verwaltetem Code

Um einen Configuration Manager Fehler zu behandeln, der in einer synchronen Abfrage ausgelöst wird, fangen Sie die Ausnahme SmsQueryException ab. Da diese Ausnahme auch von SMS_Exception] abgefangen wird, können Sie sie und die Ausnahme SmsConnectionException im gleichen catch-Block abfangen.

Wenn die Ausnahme, die in einem SMS_Exception abgefangen wird, eine SmsQueryException ist, können Sie sie verwenden, um zum zugrunde liegenden __ExtendedException oder SMS_ExtendedExceptionzu gelangen. Da die verwaltete SMS-Anbieterbibliothek diese Ausnahmen nicht umschließt, müssen Sie das ManagementException-Objekt des System.Management-Namespaces verwenden, um darauf zuzugreifen.

Hinweis

Der Übersichtlichkeit halber lösen die meisten Beispiele in dieser Dokumentation einfach ausnahmen erneut aus. Sie können sie durch das folgende Beispiel ersetzen, wenn Sie informativere Ausnahmeinformationen benötigen.

So behandeln Sie einen synchronen Abfragefehler

  1. Schreiben Sie Code für den Zugriff auf den SMS-Anbieter.

  2. Verwenden Sie den folgenden Beispielcode, um die Ausnahmen SmsQueryException und SmsConnectionException abzufangen .

Beispiel

Die folgende C#-Beispielfunktion versucht, ein nicht vorhandenes SMS_Package Paket zu öffnen. Im Ausnahmehandler bestimmt der Code, welcher Fehlertyp ausgelöst wurde, und zeigt dessen Informationen an.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager Codeausschnitten.

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

Die Beispielmethode verfügt über die folgenden Parameter:

Parameter Typ Beschreibung
connection - WqlConnectionManager Eine gültige Verbindung mit dem Anbieter.

Kompilieren des Codes

Für dieses C#-Beispiel ist Folgendes erforderlich:

Namespaces

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Robuste Programmierung

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager Fehlern.

Siehe auch

Informationen zu FehlernBehandeln von Configuration Manager asynchronen Fehlern mithilfe von verwaltetem Code