Handhabung von synchronen Fehlern in Configuration Manager mithilfe von verwaltetem CodeHow to Handle Configuration Manager Synchronous Errors by Using Managed Code

Um einen Configuration Manager Fehler zu behandeln, der in einer synchronen Abfrage ausgelöst wird, fangen Sie die smsqueryexception -Ausnahme ab.To handle a Configuration Manager error that is raised in a synchronous query, you catch the SmsQueryException exception. Da diese Ausnahme ebenfalls durch SMS_Exception] abgefangen wird, können Sie Sie und die smsconnectionexception -Ausnahme im gleichen catch-Block abfangen.Because this exception is also caught by SMS_Exception], you can catch it and the SmsConnectionException exception in the same catch block.

Wenn die Ausnahme, die in einem SMS_Exception abgefangen wird, eine smsqueryexceptionist, können Sie Sie verwenden, um zum zugrunde liegenden oder zu gelangen __ExtendedException SMS_ExtendedException .If the exception that is caught in an SMS_Exception is an SmsQueryException, you can use it to get to the underlying __ExtendedException or SMS_ExtendedException. Da die verwaltete SMS-Anbieter Bibliothek diese Ausnahmen nicht umschließt, müssen Sie den System. Management-Namespace ManagementException -Objekt verwenden, um darauf zuzugreifen.Because the managed SMS Provider library does not wrap these exceptions, you will need to use the System.Management namespace ManagementException object to access them.

Hinweis

Aus Gründen der Übersichtlichkeit lösen die meisten Beispiele in dieser Dokumentation einfach Ausnahmen erneut aus.For clarity, most examples in this documentation simply re-throw exceptions. Sie können Sie durch das folgende Beispiel ersetzen, wenn Sie weitere informative Ausnahme Informationen benötigen.You can replace them with the following example if you want more informative exception information.

So verarbeiten Sie einen synchronen Abfrage FehlerTo handle a synchronous query error

  1. Schreiben Sie Code für den Zugriff auf den SMS-Anbieter.Write code to access the SMS Provider.

  2. Verwenden Sie den folgenden Beispielcode, um die Ausnahmen smsqueryexception und smsconnectionexception abzufangen.Use the following example code to catch the SmsQueryException and SmsConnectionException exceptions.

BeispielExample

Die folgende c#-Beispiel Funktion versucht, ein nicht vorhandenes Paket zu öffnen SMS_Package .The following C# example function attempts to open a nonexistent SMS_Package package. Im Ausnahmehandler bestimmt der Code, welcher Fehlertyp ausgelöst wurde, und zeigt dessen Informationen an.In the exception handler, the code determines what type of error has been raised and displays its information.

Informationen zum Aufrufen des Beispielcodes finden Sie unter Aufrufen von Configuration Manager-Codeausschnitten.For information about calling the sample code, see Calling Configuration Manager Code Snippets.

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:The example method has the following parameters:

ParameterParameter typeType BESCHREIBUNGDescription
connection - WqlConnectionManager Eine gültige Verbindung mit dem Anbieter.A valid connection to the provider.

Kompilieren des CodesCompiling the Code

Dieses c#-Beispiel erfordert Folgendes:This C# example requires:

NamespacesNamespaces

SystemSystem

System.Collections.GenericSystem.Collections.Generic

System.TextSystem.Text

Microsoft.ConfigurationManagement.ManagementProviderMicrosoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngineMicrosoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.ManagementSystem.Management

System.ComponentModelSystem.ComponentModel

AssemblyAssembly

microsoft.configurationmanagement.managementprovidermicrosoft.configurationmanagement.managementprovider

adminui.wqlqueryengineadminui.wqlqueryengine

System.ManagementSystem.Management

Stabile ProgrammierungRobust Programming

Weitere Informationen zur Fehlerbehandlung finden Sie unter Informationen zu Configuration Manager-Fehlern.For more information about error handling, see About Configuration Manager Errors.

Weitere InformationenSee Also

Informationen zu Fehlern beim behandeln Configuration Manager asynchroner Fehler mithilfe von verwaltetem CodeAbout errors How to Handle Configuration Manager Asynchronous Errors by Using Managed Code