Share via


Come gestire gli errori sincroni Configuration Manager usando codice gestito

Per gestire un errore Configuration Manager generato in una query sincrona, si intercetta l'eccezione SmsQueryException. Poiché questa eccezione viene intercettata anche da SMS_Exception], è possibile intercettarla e l'eccezione SmsConnectionException nello stesso blocco catch.

Se l'eccezione rilevata in un SMS_Exception è un'eccezione SmsQueryException, è possibile usarla per accedere al sottostante __ExtendedException o SMS_ExtendedException. Poiché la libreria del provider SMS gestito non esegue il wrapping di queste eccezioni, sarà necessario utilizzare l'oggetto ManagementException dello spazio dei nomi System.Management per accedervi.

Nota

Per maggiore chiarezza, la maggior parte degli esempi in questa documentazione si limita a generare nuovamente eccezioni. È possibile sostituirli con l'esempio seguente se si vogliono informazioni più dettagliate sulle eccezioni.

Per gestire un errore di query sincrono

  1. Scrivere codice per accedere al provider SMS.

  2. Usare il codice di esempio seguente per intercettare le eccezioni SmsQueryException e SmsConnectionException .

Esempio

La funzione di esempio C# seguente tenta di aprire un pacchetto inesistente SMS_Package . Nel gestore delle eccezioni il codice determina il tipo di errore generato e visualizza le relative informazioni.

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice Configuration Manager.

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

Il metodo di esempio include i parametri seguenti:

Parametro Tipo Descrizione
connection - WqlConnectionManager Connessione valida al provider.

Compilazione del codice

Questo esempio C# richiede:

Namespaces

Sistema

System.collections.generic

System.Text

Microsoft. ConfigurationManagement.ManagementProvider

Microsoft. ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Assembly

microsoft.configurationmanagement.managementprovider

adminui.wqlqueryengine

System.Management

Programmazione efficiente

Per altre informazioni sulla gestione degli errori, vedere Informazioni sugli errori di Configuration Manager.

Vedere anche

Informazioni sugli erroriCome gestire Configuration Manager errori asincroni tramite codice gestito