Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
O tratamento de erros do Microsoft Point of Service for .NET (POS para .NET) é implementado através do uso de exceções. As quatro classes de exceção POS para .NET são as seguintes:
Os códigos de erro do Ponto de Serviço Unificado Padrão (UnifiedPOS) são representados pela ErrorCode enumeração.
PosException
PosException é a classe de exceção Base para PosControlException, PosManagementException e PosLibraryException. PosException é derivado de System.Exception.
PosControlException
PosControlException é a exceção padrão lançada por Service Objects para aplicativos POS for .NET.
PosManagementException
PosManagementException é lançado pelo PDV para Gerenciamento de Dispositivos .NET. Aplicativos e objetos de serviço não devem lançar PosManagementException.
PosLibraryException
PosLibraryException é lançado por PosExplorer. Aplicativos e objetos de serviço não devem lançar PosLibraryException.
Códigos de Erro
A tabela a seguir fornece um mapeamento entre os códigos de erro padrão do UnifiedPOS e os valores ErrorCode fornecidos pelo POS para .NET.
| Membro do POS ErrorCode | Código de erro do UnifiedPOS | Causa do erro |
|---|---|---|
| Ocupado | E_BUSY | O estado atual do objeto de serviço não permite essa solicitação. |
| Reivindicação | E_CLAIMED | Outra instância de Service Object já reivindicou o dispositivo POS. |
| Fechadas | E_CLOSED | O dispositivo POS está fechado. |
| Preterido | E_DEPRECATED | O método foi preterido e não está mais disponível. |
| Desativado | E_DISABLED | A operação não pode ser executada enquanto o dispositivo está desativado. |
| Exists | E_EXISTS | O nome do arquivo ou outro valor especificado já existe. |
| Alargado | E_EXTENDED | Ocorreu uma condição de erro específica do dispositivo. |
| Falha | E_FAILURE | O dispositivo POS não pode executar o procedimento solicitado, mesmo que o dispositivo esteja conectado ao sistema e ativo. |
| Ilegal | E_ILLEGAL | O aplicativo POS tentou uma operação ilegal ou sem suporte com o dispositivo ou usou um valor de parâmetro inválido. |
| Não existe | E_NOEXIST | O nome do arquivo ou outro valor especificado não existe. |
| NoHardware | E_NOHARDWARE | O dispositivo POS não está conectado ao sistema ou não está ligado. |
| NãoServiço | E_NOSERVICE | O objeto de serviço não pode se comunicar com o dispositivo, normalmente devido a um erro de instalação ou configuração. |
| NotReivindicado | E_NOTCLAIMED | O aplicativo POS tentou acessar um dispositivo de uso exclusivo que deve ser reivindicado antes que o método ou a ação do conjunto de propriedades possa ser usado. |
| Offline | E_OFFLINE | O dispositivo POS está offline. |
| Limite de tempo excedido | E_TIMEOUT | O Objeto de Serviço atingiu o tempo limite aguardando uma resposta do dispositivo POS. |
Exemplo
O exemplo de código a seguir demonstra como o MSR lida com exceções de PDV e usa os ErrorCodes contidos nessas exceções para coletar informações sobre elas.
// Create a new instance of the MSR and opens the device.
msr = (Msr)explorer.CreateInstance(msrinfo);
msr.Open();
// Try to enable the device without first claiming it.
// This will throw a PosControlException which, through
// its ErrorCode, will yield information about the exception.
try
{
msr.DeviceEnabled = true;
}
catch (PosControlException e)
{
// Examine the ErrorCode to determine the cause of the error.
if (e.ErrorCode == ErrorCode.NoHardware)
{
Console.WriteLine("The POS device is not connected ");
Console.WriteLine("to the system or is not turned on.");
}
if (e.ErrorCode == ErrorCode.Timeout)
{
Console.WriteLine("The Service Object timed out
waiting for a response from the POS device.");
}
// The example has not claimed the MSR, which is an
// exclusive-access device, before trying to enable
// it. This will throw the PosControlException
// and trigger the following conditional block.
// Once triggered, the MSR will be claimed and enabled.
if (e.ErrorCode == ErrorCode.NotClaimed)
{
Console.WriteLine("The POS application attempted to access ");
Console.WriteLine("an exclusive-use device that must be ");
Console.WriteLine("claimed before the method or property ");
Console.WriteLine("set action can be used.")
msr.Claim(1000);
msr.DeviceEnabled = true;
}
}