  Despite being an old language feature, Java exception handling code is one of
the least understood parts of many systems. Several studies have analyzed the
characteristics of exception handling code, trying to identify common practices
or even link such practices to software bugs. Few works, however, have
investigated exception handling issues from the point of view of developers.
None of the works have focused on discovering exception handling guidelines
adopted by current systems -- which are likely to be a driver of common
practices. In this work, we conducted a qualitative study based on
semi-structured interviews and a survey whose goal was to investigate the
guidelines that are (or should be) followed by developers in their projects.
Initially, we conducted semi-structured interviews with seven experienced
developers, which were used to inform the design of a survey targeting a
broader group of Java developers (i.e., a group of active Java developers from
top-starred projects on GitHub). We emailed 863 developers and received 98
valid answers. The study shows that exception handling guidelines usually exist
(70%) and are usually implicit and undocumented (54%). Our study identifies 48
exception handling guidelines related to seven different categories. We also
investigated how such guidelines are disseminated to the project team and how
compliance between code and guidelines is verified; we could observe that
according to more than half of respondents the guidelines are both disseminated
and verified through code inspection or code review. Our findings provide
software development teams with a means to improve exception handling
guidelines based on insights from the state of practice of 87 software
projects.
