Estou lutando com uma pergunta muito simples:
Agora estou trabalhando em um aplicativo de servidor e preciso inventar uma hierarquia para as exceções (algumas exceções já existem, mas é necessária uma estrutura geral). Como eu começo a fazer isso?
Estou pensando em seguir esta estratégia:
1) O que está errado?
- Algo é perguntado, o que não é permitido.
- Algo é solicitado, é permitido, mas não funciona, devido a parâmetros incorretos.
- Algo é perguntado, é permitido, mas não funciona, devido a erros internos.
2) Quem está iniciando a solicitação?
- O aplicativo cliente
- Outro aplicativo de servidor
3) Entrega de mensagens: como estamos lidando com um aplicativo de servidor, trata-se de receber e enviar mensagens. E daí se o envio de uma mensagem der errado?
Dessa forma, podemos obter os seguintes tipos de exceção:
- ServerNotAllowedException
- ClientNotAllowedException
- ServerParameterException
- ClientParameterException
- InternalException (caso o servidor não saiba de onde vem a solicitação)
- ServerInternalException
- ClientInternalException
- MessageHandlingException
Essa é uma abordagem muito geral para definir a hierarquia de exceções, mas receio que esteja faltando alguns casos óbvios. Você tem idéias sobre as áreas que não estou abordando, conhece alguma desvantagem desse método ou existe uma abordagem mais geral para esse tipo de pergunta (no último caso, onde posso encontrá-lo)?
desde já, obrigado
catch
blocos que uso, não tenho muito mais uso para a exceção do que a mensagem de erro que ela contém. Eu realmente não tenho nada diferente que eu possa fazer por uma exceção envolvida na falha na leitura de um arquivo, como uma falha na alocação de memória durante o processo de leitura, por isso eu apenas capto std::exception
e relate a mensagem de erro que ele contém, talvez decorando com "Failed to open file: %s", ex.what()
um buffer de pilha antes de imprimi-lo.
catch
blocos diferentes em um único site de recuperação, mas geralmente é apenas para ignorar a mensagem dentro da exceção e imprimir uma mensagem mais localizada ...