Este tópico ainda não foi avaliado como - Avalie este tópico

Apêndice: Exceções do sistema de mensagens

Essa seção lista as várias exceções geradas pela API do sistema de mensagens do Service Bus. Essa referência está sujeita a mudanças, então verifique se há atualizações.

Categorias de exceções

A API do sistema de mensagens gera exceções que podem recair nas seguintes categorias com a ação associada que pode ser tomada para tentar corrigi-las:

  1. Código de erro do usuário (ArgumentException, InvalidOperationException, OperationCanceledException, SerializationException). Ação geral: tente corrigir o código antes de prosseguir.

  2. Erro de definição/configuração (MessagingEntityNotFoundException, UnauthorizedAccessException. Ação geral: revise sua configuração e altere-a, se necessário.

  3. Exceções temporárias (MessagingException, ServerBusyException, MessagingCommunicationException). Ação geral: tente a operação novamente ou notifique os usuários.

  4. Outras exceções (TransactionException, TimeoutException, MessageLockLostException/SessionLockLostException). Ação geral: geralmente, você não trata essas exceções para realizar limpeza ou anulações. Elas podem ser usadas para rastreamento.

Tipos de exceção

A tabela a seguir lista os tipos de exceção do sistema de mensagens, bem como suas causas, e cita a ação sugerida que pode ser tomada.

 

Tipo de exceção Descrição/Causa/Exemplos Ação sugerida Observação sobre nova tentativa automática/imediata

TimeoutException

O servidor não respondeu à operação solicitada dentro do tempo especificado que é controlado por OperationTimeout. O servidor pode ter concluído a operação solicitada. Isso pode ocorrer devido a atrasos na rede ou de outros elementos da infraestrutura.

Verifique a consistência do estado do sistema e tente novamente, se necessário.

Uma nova tentativa pode ajudar em alguns casos; adicione lógica de nova tentativa ao código.

InvalidOperationException

A operação solicitada pelo usuário não é permitida dentro do servidor ou serviço. Consulte a mensagem de exceção para obter detalhes. Por exemplo, o Complete irá gerar essa exceção se a mensagem tiver sido recebida no modo ReceiveAndDelete.

Verifique o código e a documentação. Assegure-se de que a operação solicitada seja válida.

A nova tentativa não ajudará.

OperationCanceledException

É feita uma tentativa de invocar uma operação em um objeto que já foi fechado, anulado ou descartado. Em casos raros, a transação do ambiente já foi descartada.

Verifique o código e assegure-se de que ele não invoque operações em um objeto descartado.

A nova tentativa não ajudará.

UnauthorizedAccessException

O TokenProvider não pôde obter um token, o token é inválido ou não contém as declarações necessárias para realizar a operação.

Assegure-se de que o provedor de tokens foi criado com os valores corretos. Verifique a configuração do serviço Access Control.

Uma nova tentativa pode ajudar em alguns casos; adicione lógica de nova tentativa ao código.

ArgumentException

ArgumentNullException

ArgumentOutOfRangeException

  • Um ou mais argumentos fornecidos ao método são inválidos.

  • O URI fornecido para NamespaceManager ou Create contém segmento(s) de caminho.

  • O esquema de URI fornecido a NamespaceManager ou Create é inválido.

  • O valor da propriedade é maior do que 32 KB.

Verifique o código chamador e assegure-se de que os argumentos sejam corretos.

A nova tentativa não ajudará.

MessagingEntityNotFoundException

A entidade associada à operação não existe ou foi excluída.

Assegure-se de que a entidade existe.

A nova tentativa não ajudará.

MessageNotFoundException

Tentativa de receber uma mensagem com um determinado número de sequência. Essa mensagem não foi encontrada.

Verifique se a mensagem já foi recebida anteriormente. Verifique a fila de mensagens mortas para confirmar se a mensagem não foi definida como uma mensagem morta.

A nova tentativa não ajudará.

MessagingCommunicationException

O cliente não pode estabelecer uma conexão com o Service Bus.

Assegure-se de que o nome de host fornecido esteja correto e que o host possa ser alcançado.

A nova tentativa poderá ajudar se houver problemas intermitentes de conectividade.

ServerBusyException

O serviço não pode processar a solicitação no momento.

O cliente pode esperar por um período de tempo e, a seguir, tentar a operação novamente.

O cliente pode tentar novamente depois de um certo intervalo. Se uma nova tentativa resultar em uma exceção diferente, verifique o comportamento de nova tentativa de tal exceção.

MessageLockLostException

O token de bloqueio associado à mensagem expirou ou não foi encontrado.

Descarte a mensagem.

A nova tentativa não ajudará.

SessionLockLostException

O bloqueio associado a esta sessão foi perdido.

Anule o objeto MessageSession.

A nova tentativa não ajudará.

MessagingException

Exceção genérica do sistema de mensagens que pode ser lançada nos seguintes casos:

  • Foi feita uma tentativa de criar um QueueClient usando um nome ou um caminho que pertence a um tipo de entidade diferente (por exemplo, um tópico).

  • Foi feita uma tentativa de enviar uma mensagem maior do que 256 KB.

  • O servidor ou serviço encontrou um erro durante o processamento da solicitação. Consulte a mensagem de exceção para obter detalhes. Normalmente, está é uma exceção temporária.

  • Verifique o código e assegure-se de que somente objetos serializáveis sejam usados para o corpo da mensagem (ou use um serializador personalizado).

  • Verifique na documentação os tipos de valores suportados nas propriedades e use somente os tipos suportados.

  • Verifique a propriedade IsTransient. Caso seja true, você pode tentar a operação novamente.

O comportamento da nova tentativa é indefinido e pode não ajudar.

MessagingEntityAlreadyExistsException

Tentativa de criar uma entidade com um nome que já está em uso por outra entidade neste namespace de serviço.

Exclua a entidade existente ou escolha um nome diferente para a entidade a ser criada.

A nova tentativa não ajudará.

QuotaExceededException

A entidade do sistema de mensagens atingiu o seu tamanho máximo permitido.

Crie espaço na entidade recebendo mensagens da entidade ou das suas subfilas.

Uma nova tentativa pode ajudar se, entretanto, as mensagens tiverem sido removidas.

RuleActionException

O Service Bus retorna essa exceção caso você tente criar uma ação de regra inválida. O Service Bus anexa essa exceção a uma mensagem morta caso ocorra um erro durante o processamento da ação de regra para essa mensagem.

Verifique se a ação de regra está correta.

A nova tentativa não ajudará.

FilterException

O Service Bus retorna essa exceção caso você tente criar um filtro inválido. O Service Bus anexa essa exceção a uma mensagem morta caso ocorra um erro durante o processamento do filtro para essa mensagem.

Verifique se o filtro está correto.

A nova tentativa não ajudará.

SessionCannotBeLockedException

Tentativa de aceitar uma sessão com uma ID de sessão específica, mas a sessão está bloqueada por outro cliente no momento.

Verifique se a sessão está desbloqueada por outros clientes.

Uma nova tentativa pode ajudar se, entretanto, a sessão tiver sido liberada.

TransactionSizeExceededException

Muitas operações fazem parte da transação.

Reduza o número de operações que fazem parte dessa transação.

A nova tentativa não ajudará.

MessagingEntityDisabledException

Solicitação de operação de tempo de execução em uma entidade desabilitada.

Ative a entidade.

Uma nova tentativa pode ajudar se, entretanto, a entidade tiver sido ativada.

NoMatchingSubscriptionException

O Service Bus retorna essa exceção se o usuário envia uma mensagem para um tópico que tem pré-filtragem habilitada e não há correspondência com nenhum dos filtros.

Verifique se pelo menos um filtro corresponde.

A nova tentativa não ajudará.

TransactionException

A transação do ambiente (Current) é inválida. Ela pode ter sido concluída ou anulada. A exceção interna pode fornecer informações adicionais.

A nova tentativa não ajudará.

TransactionInDoubtException

Houve a tentativa de uma operação em uma transação que está em dúvida ou uma tentativa de confirmar a transação e esta ficou em dúvida.

Seu aplicativo deverá tratar essa exceção (como um caso especial), pois a transação pode já ter sido confirmada.

Isso foi útil para você?
(1500 caracteres restantes)

Contribuições da comunidade

ADICIONAR
A Microsoft está realizando uma pesquisa online para saber sua opinião sobre o site do MSDN. Se você optar por participar, a pesquisa online lhe será apresentada quando você sair do site do MSDN.

Deseja participar?
© 2013 Microsoft. Todos os direitos reservados.
facebook page visit twitter rss feed newsletter