Como os desenvolvedores Java definem, disseminam e checam Políticas de Tratamento de Exceções
Tratamento de exceções; Linguagem Java; Política de tratamento de exceções; Decisões de design, Estudo qualitativo, Mineração de Repositórios
Apesar de ser uma feature antiga da linguagem, os desenvolvedores Java ainda sentem dificuldades em usar o tratamento de exceções até para os problemas mais básicos. E sendo o tratamento de exceções essencialmente um problema design, é importante entender as motivações e decisões relacionadas a essa parte da aplicação. Trabalhos anteriores que investigaram o tratamento de exceções nesse nível são poucos e limitados, o que nos levou a realizar este trabalho. Algumas questões que surgem e que ainda não foram exploradas a fundo por outros trabalhos são: O tratamento de exceções Java está sendo usado por ser uma imposição da linguagem Java ou ele é utilizado de forma consciente para implementar ações de recuperação de falhas? O tratamento de exceções está ligado a decisões de design ou está sendo planejado e utilizado apenas no nível de implementação? O objetivo do presente trabalho consiste investigar estas e outras questões associadas ao porquê e como o tratamento de exceções é utilizado na prática, através de um estudo multi-método baseado em no uso de técnicas de Grounded Theory e de mineração de repositórios. Até o presente momento realizamos dois estudos qualitativos, com um total de 103 participantes, quase todos de organizações diferentes. O primeiro estudo foi baseado em entrevistas com desenvolvedores da iniciativa privada. O segundo foi um survey com desenvolvedores GitHub. Os resultados parciais mostram que quase metade dos projetos Java não definem regras ou mesmo recomendações para o ciclo de vida das exceções, e que essas regras, quando existem, são implícitas, sendo disseminadas e verificadas através de estratégias frágeis, que podem não garantir o uso de exceções como planejado. Um novo estudo, que vai confrontar as respostas ao survey com o código-fonte está em planejamento.