Cómo controlar errores sincrónicos de Configuration Manager mediante código administrado

Para controlar un error de Configuration Manager que se genera en una consulta sincrónica, se detecta la excepción SmsQueryException. Dado que esta excepción también es detectada por SMS_Exception], puede capturarla junto con la excepción SmsConnectionException en el mismo bloque de captura.

Si la excepción que se detecta en una SMS_Exception es una SmsQueryException, puede usarla para acceder al or SMS_ExtendedExceptionsubyacente__ExtendedException. Dado que la biblioteca del proveedor de SMS administrado no encapsula estas excepciones, necesitará utilizar el objeto ManagementException del espacio de nombres System.Management para acceder a ellas.

Nota:

Para mayor claridad, la mayoría de los ejemplos de esta documentación simplemente vuelven a generar las excepciones. Puede reemplazarlos con el ejemplo siguiente si desea más información informativa sobre las excepciones.

Para controlar un error de consulta sincrónica

  1. Escriba el código para acceder al proveedor de SMS.

  2. Use el código de ejemplo siguiente para detectar las excepciones SmsQueryException y SmsConnectionException .

Ejemplo

La siguiente función de ejemplo de C# intenta abrir un paquete inexistente SMS_Package . En el controlador de excepciones, el código determina qué tipo de error se ha generado y muestra su información.

Para obtener información sobre cómo llamar al código de ejemplo, consulte Llamar a fragmentos de código de 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);
        }
    }
}

El método de ejemplo tiene los siguientes parámetros:

Parámetro Tipo Descripción
connection - WqlConnectionManager Una conexión válida con el proveedor.

Compilar el código

Este ejemplo de C# requiere:

Espacios de nombres

System

System.Collections.Generic

System.Text

Microsoft.ConfigurationManagement.ManagementProvider

Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine

System.Management

System.ComponentModel

Ensamblado

Microsoft.ConfigurationManagement.ManagementProvider

adminui.wqlqueryengine

System.Management

Programación sólida

Para obtener más información acerca del control de errores, consulte Acerca de los errores de Configuration Manager.

Consulta también

Acerca de los erroresCómo controlar los errores asincrónicos de Configuration Manager mediante código administrado