Come gestire gli errori sincroni di Configuration Manager tramite codice gestito

Per gestire un errore di Configuration Manager generato in una query sincrona, intercettare 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 utilizzarla per accedere al metodo 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 chiarezza, la maggior parte degli esempi in questa documentazione si limita a generare di nuovo le eccezioni. È possibile sostituirli con l'esempio seguente se si desiderano informazioni più dettagliate sulle eccezioni.

Per gestire un errore di query sincrona

  1. Scrivere codice per accedere al provider SMS.

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

Esempio

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

Per informazioni sulla chiamata del codice di esempio, vedere Chiamata di frammenti di codice di 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 di C# richiede:

Spazi dei nomi

Sistema

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagementManagementProvider

Microsoft.ConfigurationManagementManagementProvider.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 gli errori asincroni di Configuration Manager tramite codice gestito