Delen via


Synchrone Configuration Manager-fouten afhandelen met behulp van beheerde code

Als u een Configuration Manager fout wilt afhandelen die wordt gegenereerd in een synchrone query, ondervangt u de uitzondering SmsQueryException. Omdat deze uitzondering ook wordt ondervangen door SMS_Exception], kunt u deze en de uitzondering SmsConnectionException in hetzelfde catch-blok vangen.

Als de uitzondering die wordt opgevangen in een SMS_Exception een SmsQueryException is, kunt u deze gebruiken om naar de onderliggende __ExtendedException of SMS_ExtendedExceptionte gaan. Omdat deze uitzonderingen niet worden verpakt in de bibliotheek van de beheerde SMS-provider, moet u het object System.Management-naamruimte ManagementException gebruiken om ze te openen.

Opmerking

Voor de duidelijkheid: in de meeste voorbeelden in deze documentatie worden uitzonderingen gewoon opnieuw weergegeven. U kunt deze vervangen door het volgende voorbeeld als u meer informatieve uitzonderingsinformatie wilt.

Een synchrone queryfout afhandelen

  1. Schrijf code voor toegang tot de SMS-provider.

  2. Gebruik de volgende voorbeeldcode om de uitzonderingen SmsQueryException en SmsConnectionException op te vangen.

Voorbeeld

Met de volgende C#-voorbeeldfunctie wordt geprobeerd een niet-bestaand SMS_Package pakket te openen. In de uitzonderingshandler bepaalt de code welk type fout is gegenereerd en geeft de informatie weer.

Zie Aanroepen Configuration Manager codefragmenten voor meer informatie over het aanroepen van de voorbeeldcode.

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

De voorbeeldmethode heeft de volgende parameters:

Parameter Type Beschrijving
connection - WqlConnectionManager Een geldige verbinding met de provider.

De code compileren

Voor dit C#-voorbeeld is het volgende vereist:

Naamruimten

Systeem

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Vergadering

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Robuust programmeren

Zie Over Configuration Manager fouten voor meer informatie over foutafhandeling.

Zie ook

Over foutenHet afhandelen van Configuration Manager Asynchrone fouten met behulp van beheerde code