Como, ao desenvolver um projeto de tamanho médio, você identifica, cria e mantém códigos de erro?
Pela minha vida, não consigo pensar em um método simples e limpo de fazê-lo. Algumas de minhas idéias convertem nomes de classes e nomes de métodos em uma sequência inteira, mas essa é uma maneira longa de exibir para o usuário, além do fato de que nomes de métodos e nomes de classes podem mudar (espero que não!). Outros estão apenas usando um sistema de log incrementado (ou seja, sempre que eu criar uma nova mensagem de erro, basta adicionar 1 ao último ID da mensagem de erro). Mas isso é completamente desorganizado.
Para ser mais específico, estou falando de código de erro, como:
Error 401 Unauthorized.
error-messages
ahodder
fonte
fonte
Respostas:
Não.
Os códigos de erro são um anacronismo, originam-se de velhos tempos em que a produção era realmente difícil e cara, e a única maneira de sinalizar uma condição de erro pode ter sido através de várias luzes do painel frontal:
Atualmente, temos um tratamento maduro de exceções incorporado em praticamente todos os idiomas tradicionais. Use-o. Forneça ao usuário informações com as quais eles possam trabalhar; não os incomode com blá-blá técnico, mas diga a eles aproximadamente o que deu errado e o que eles podem fazer sobre isso. Para o registro, basta fornecer nomes descritivos para suas exceções e registrar o nome. Mais fácil de lembrar e mais fácil de encontrar usando o grep ou ferramentas de pesquisa semelhantes.
A exceção é, obviamente, quando você está programando para situações em que a saída ainda é difícil e cara, como sistemas embarcados ou protocolos de rede. O HTTP ainda usa códigos de resposta numéricos porque eles são extremamente fáceis de analisar com eficiência - em algumas situações, ler apenas o primeiro dígito já pode lhe dizer o suficiente e você pode descartar o restante do pacote.
fonte
Você deve verificar como os códigos de erro / status são organizados em protocolos comuns, como HTTP . Eles reservam intervalos distintos para diferentes tipos de status / erros. Isso facilita tanto para os usuários identificar um código de status desconhecido quanto para os desenvolvedores atribuírem um código para um novo tipo de erro que não foi tratado antes.
fonte
Desculpe, por que usar códigos de erro?
Capture a exceção, registre-a e ofereça-se para enviar um relatório se o programa não puder se recuperar .
(Supondo que seu idioma seja compatível com exceções.)
A única informação relevante que pode ajudá-lo a corrigir o erro é o rastreamento de pilha que você não obtém com um código de erro. (Também suponho que você queira usar códigos de erro para relatórios de erros e não jogá-los na cara do usuário.)
fonte
Vou assumir um contexto processual (C). Se você tiver objetos, um objeto de erro geralmente é melhor, seja uma exceção ou não.
Você deve usar códigos de erro locais para cada módulo. Para uma biblioteca, você pode ter um cabeçalho especial listando os códigos de erro, com o número 1, 2 etc (ou -1, -2, se preferir). Certifique-se de sempre retornar um desses códigos, por exemplo, traduza
errno
em seus próprios códigos. Se você tiver várias camadas de módulos, traduza a cada etapa (ou pré-defina um intervalo para o erro mais profundo, por exemplo, os valores 1001 - 1050 são desse outro módulo).Também é importante que você forneça um meio de converter o código em uma string. Você nunca deve relatar apenas o código, que só leva à frustração. Na verdade, praticamente qualquer código em seu aplicativo deve vir com uma função de conversão de string. Por exemplo, libc normalmente possui
strerror
estrsignal
, mas infelizmente não possuistrwaitstatus
.fonte