Dela via


Hantera Configuration Manager synkrona fel med hjälp av hanterad kod

Om du vill hantera ett Configuration Manager fel som utlöses i en synkron fråga fångar du undantaget SmsQueryException. Eftersom det här undantaget också fångas av SMS_Exception] kan du fånga det och SmsConnectionException-undantaget i samma catch-block.

Om undantaget som fångas i en SMS_Exception är en SmsQueryException kan du använda det för att komma till den underliggande __ExtendedException eller SMS_ExtendedException. Eftersom det hanterade SMS-providerbiblioteket inte omsluter dessa undantag måste du använda objektet System.Management namespace ManagementException för att komma åt dem.

Obs!

För tydlighetens skull utlöser de flesta exempel i den här dokumentationen helt enkelt undantag igen. Du kan ersätta dem med följande exempel om du vill ha mer information om informativa undantag.

Hantera ett synkront frågefel

  1. Skriv kod för att få åtkomst till SMS-providern.

  2. Använd följande exempelkod för att fånga undantagen SmsQueryException och SmsConnectionException .

Exempel

Följande C#-exempelfunktion försöker öppna ett obefintligt SMS_Package paket. I undantagshanteraren avgör koden vilken typ av fel som har utlösts och visar dess information.

Information om hur du anropar exempelkoden finns i Anropa Configuration Manager kodfragment.

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

Exempelmetoden har följande parametrar:

Parameter Typ Beskrivning
connection - WqlConnectionManager En giltig anslutning till providern.

Kompilera koden

Det här C#-exemplet kräver:

Namnområden

System

System.Collections.Generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Församlingen

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Robust programmering

Mer information om felhantering finns i Om Configuration Manager fel.

Se även

Om felså här hanterar du Configuration Manager asynkrona fel med hjälp av hanterad kod