Como Lidar com Erros Síncronos do Configuration Manager ao Utilizar o Código Gerido
Para lidar com um erro do Gestor de Configuração que é levantado numa consulta sincronizada, apanha a exceção SmsQueryException. Como esta exceção também é apanhada por SMS_Exception], pode apanhá-la e a exceção SmsConnectionException no mesmo bloco de captura.
Se a exceção que é apanhada num SMS_Exception for um SmsQueryException,pode usá-lo para chegar ao subjacente __ExtendedException
ou SMS_ExtendedException
. Como a biblioteca de fornecedores de SMS gerida não encerra estas exceções, terá de utilizar o objeto System.Managementspace ManagementException para aceder às mesmos.
Nota
Para maior clareza, a maioria dos exemplos nesta documentação simplesmente relançam exceções. Pode substituí-los pelo exemplo seguinte se quiser informações de exceção mais informativas.
Para lidar com um erro de consulta sincronizado
Escreva código para aceder ao Fornecedor DE SMS.
Utilize o seguinte código de exemplo para apanhar as exceções SmsQueryException e SmsConnectionException.
Exemplo
A função de exemplo C# a seguir tenta abrir um SMS_Package
pacote inexistente. No manipulador de exceções, o código determina que tipo de erro foi levantado e exibe as suas informações.
Para obter informações sobre a chamada do código de amostra, consulte o Código de Identificação do Gestor de Chamadas.
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);
}
}
}
O método exemplo tem os seguintes parâmetros:
Parâmetro | Tipo | Description |
---|---|---|
connection |
- WqlConnectionManager |
Uma ligação válida ao fornecedor. |
A Compilar o Código
Este exemplo C# requer:
Espaços de nomes
Sistema
System.Collections.Generic
System.Text
Microsoft.ConfigurationManagement.ManagementProvider
Microsoft.ConfigurationManagement.ManagementProvider.WqlQueryEngine
Sistema.Gestão
System.ComponentModel
Assemblagem
microsoft.configurationmanagement.managementprovider
adminui.wqlqueryengine
Sistema.Gestão
Programação Robusta
Para obter mais informações sobre o tratamento de erros, consulte Sobre erros do Gestor de Configuração.
Consulte também
Sobre erros Como lidar com erros assíncronos do Gestor de Configuração através da utilização do Código Gerido