Pergunta

Eu preciso padronizar como eu classificar e erros punho / exceções 'graciosamente'.

Eu uso atualmente um processo pelo qual eu relatar os erros para uma função passando um erro de número, a gravidade código, localização-info e extra-info-string. Esta função retorna boolean verdadeiro se o erro é fatal eo aplicativo deve morrer, caso contrário false. Como parte de seu processo, além de visual-feedback para o usuário, a função também log para arquivo erros de acima de algum nível de gravidade.

índices de erro de número um array de strings explicando o tipo de erro, por exemplo: 'O acesso ao arquivo', 'a entrada do usuário', 'Thread-criação', 'Acesso à rede', etc. Gravidade-code é binária OR de 0 , 1,2 ou 4, 0 = informativo, 1 = user_retry, 2 = cannot_complete, 4 = cannot_continue. Localização-info é o módulo e função, e Extra-info está valores das variáveis ??parameter- e locais.

Eu quero fazer isso em uma maneira padrão de que eu possa colocar em uma biblioteca e re-uso em todos os meus aplicativos de tratamento de erros. Eu uso principalmente C / C ++ no Linux, mas gostaria de usar a biblioteca resultante com outras linguagens / plataformas também.

  • Uma idéia é estender o tipo de erro matriz para indicar algum padrão comportamento para um dado nível de gravidade, mas isso deve, em seguida, tornar-se o medidas tomadas e não dão opções para o usuário?

  • Ou: deve esse alargamento ser um sub-conjunto de opções que o utilizador precisa escolher? O problema com isto é que as opções seriam de necessidade ser generalizada opções relacionadas com a programação que podem muito bem-defletor completamente um Do usuário final.

  • Ou: deve cada aplicativo que utiliza o passagem rotina de erro-lib ao longo de seu próprio variedade de qualquer erro ou omissão comportamentos - mas isso vai derrotar o finalidade da biblioteca ...

  • Ou: deve a severidade-níveis ser tratadas em cada aplicativo?

Ou: o que você sugere? Como você lida com erros? Como posso melhorar isso?

Foi útil?

Solução

Como você lida com os erros realmente depende da aplicação application.A Web tem um mecanismo-Catching erro diferente do que uma aplicação desktop, e ambos os diferem drasticamente de um sistema de mensagens assíncrono.

Dito isto a prática de um comum na manipulação de erro é de lidar com isso no nível mais baixo possível, onde ele pode ser tratada. Isso geralmente significa que a camada de aplicação ou a GUI.

Eu gosto dos níveis de gravidade. Talvez você pode ter uma biblioteca de erros recolha conectável com diferentes provedores de saída de erro e provedor de nível de gravidade.

provedores de saída pode incluir coisas como uma logginProvider e IgnoreErrorsProvider. prestadores de gravidade provavelmente seria algo implementadas por cada projeto desde níveis de gravidade são geralmente determinada por esse tipo de projeto em que ela ocorre. (Por exemplo, problemas de conexão de rede são mais graves para uma aplicação bancária do que para um sistema de gerenciamento de contatos).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top