Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
Escriba el código para acceder al proveedor de SMS.
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