Identifying and analyzing Java exception handling guidelines: a developers point-of-view - Melo, Hugo Faria (2020)
O mecanismo de tratamento de exceções é um recurso presente na maioria das linguagens de programação modernas para o desenvolvimento de sistemas tolerantes à falhas. Apesar de ser um recurso já antigo da linguagem Java, os desenvolvedores ainda sentem dificuldades em usar o tratamento de exceções até para os problemas mais básicos. Apesar do tratamento de exceções de um sistema ser essencialmente um problema de design, poucos trabalhos se propõem a investigar o tratamento de exceções Java do ponto de vista dos desenvolvedores. Nesta tese nós exploramos as decisões tomadas e soluções adotadas por desenvolvedores Java para o tratamento de exceções em seus projetos. Ao todo realizamos 6 estudos, que consultaram um total de 423 desenvolvedores, entre entrevistas e surveys, e analisou o código-fonte de 240 projetos Java hospedados no GitHub. Nossos resultados mostram que as decisões relacionadas ao tratamento de exceções Java não costumam ser documentadas, e por vezes não são sequer discutidas verbalmente entre a equipe de desenvolvedores; que os desenvolvedores acreditam que seus código-fonte seguem as soluções adotadas; que os desenvolvedores aprendem sobre as soluções para tratamento de exceções através de reuniões informais e inspeção de código; que as soluções adotadas no projeto são verificadas no código-fonte através de revisão de código. Analisamos código-fonte Java de 240 projetos para verificar o cumprimento de 7 das 31 soluções para o tratamento de exceções Java que identificamos, e constatamos que muitas vezes o código não cumpre o pretendido. Nossa pesquisa revela uma fragilidade na implementação e verificação do tratamento de exceções Java que ajudará pesquisadores e comunidade na elaboração de ferramentas e outras soluções que auxiliem desenvolvedores a aplicarem o tratamento de exceções com eficácia.