Existe uma diretriz para quando usar o erro ao escrever um aplicativo de linha de comando? Para minha surpresa, não encontrei nada ao pesquisar no Google.
Em particular, a questão que me preocupa agora é se deve usar stdout
ou stderr
quando o usuário chamou o programa com argumentos ilegais. No entanto, uma resposta mais abrangente é muito apreciada, porque esse certamente não será o único caso em que uma regra clara será necessária para escrever um programa que se comporte da maneira esperada pelo usuário.
Respostas:
Sim, exiba uma mensagem
stderr
quando os argumentos errados forem usados. E se isso também fizer com que o aplicativo saia, saia com um status de saída diferente de zero.Você deve usar o fluxo de erros padrão para mensagens de diagnóstico ou para interação do usuário. As mensagens de diagnóstico incluem mensagens de erro, avisos e outras mensagens que não fazem parte da saída do utilitário quando estão funcionando corretamente ("corretamente" significa que não há nada de excepcional acontecendo, como arquivos não encontrados ou o que quer que seja).
Muitos shells (todos?) Exibem avisos, o que o usuário digita, menus etc.,
stderr
para que o redirecionamentostdout
não o impeça de interagir com o shell de maneira significativa.O seguinte é de uma postagem de blog sobre este tópico:
"Identificar-se" significa simplesmente dizer "Ei! Sou eu falando! Isso deu errado: [...]":
stderr
É preferível fazer isso , pois de outra forma poderia ser lido pelo que estava lendostdout
(mas não fazemos isso dels
qualquer maneira , não é?).fonte
Das especificações POSIX para os fluxos padrão:
Em outras palavras, erros, informações de depuração e qualquer coisa que se enquadre na categoria de diagnóstico são inseridos
stderr
.Consulte a pergunta relacionada para obter mais informações: Os relatórios de progresso / informações de registro pertencem ao stderr ou stdout?
fonte