Studying the Prevalence of Exception Handling Anti-Patterns
Modern programming languages, such as Java and C#, typically provide features that handle exceptions. These features separate error-handling code from regular source code and are proven to enhance the practice of software reliability, comprehension, and maintenance. Having acknowledged the advantage...
        Saved in:
      
    
          | Published in | 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC) pp. 328 - 331 | 
|---|---|
| Main Authors | , | 
| Format | Conference Proceeding | 
| Language | English | 
| Published | 
            IEEE
    
        01.05.2017
     | 
| Subjects | |
| Online Access | Get full text | 
| DOI | 10.1109/ICPC.2017.1 | 
Cover
| Abstract | Modern programming languages, such as Java and C#, typically provide features that handle exceptions. These features separate error-handling code from regular source code and are proven to enhance the practice of software reliability, comprehension, and maintenance. Having acknowledged the advantages of exception handling features, the misuse of them can still cause catastrophic software failures, such as application crash. Prior studies suggested anti-patterns of exception handling, while little knowledge was shared about the prevalence of these anti-patterns. In this paper, we investigate the prevalence of exception-handling anti-patterns. We collected a thorough list of exception anti-patterns from 16 open-source Java and C# libraries and applications using an automated exception flow analysis tool. We found that although exception handling anti-patterns widely exist in all of our subjects, only a few anti-patterns (e.g. Unhandled Exceptions, Catch Generic, Unreachable Handler, Over-catch, and Destructive Wrapping) can be commonly identified. On the other hand, we find that the prevalence of anti-patterns illustrates differences between C# and Java. Our results call for further in-depth analyses on the exception handling practices across different languages. | 
    
|---|---|
| AbstractList | Modern programming languages, such as Java and C#, typically provide features that handle exceptions. These features separate error-handling code from regular source code and are proven to enhance the practice of software reliability, comprehension, and maintenance. Having acknowledged the advantages of exception handling features, the misuse of them can still cause catastrophic software failures, such as application crash. Prior studies suggested anti-patterns of exception handling, while little knowledge was shared about the prevalence of these anti-patterns. In this paper, we investigate the prevalence of exception-handling anti-patterns. We collected a thorough list of exception anti-patterns from 16 open-source Java and C# libraries and applications using an automated exception flow analysis tool. We found that although exception handling anti-patterns widely exist in all of our subjects, only a few anti-patterns (e.g. Unhandled Exceptions, Catch Generic, Unreachable Handler, Over-catch, and Destructive Wrapping) can be commonly identified. On the other hand, we find that the prevalence of anti-patterns illustrates differences between C# and Java. Our results call for further in-depth analyses on the exception handling practices across different languages. | 
    
| Author | Bicalho De Padua, Guilherme Shang, Weiyi  | 
    
| Author_xml | – sequence: 1 givenname: Guilherme surname: Bicalho De Padua fullname: Bicalho De Padua, Guilherme email: g_bicalh@encs.concordia.ca organization: Dept. of Comput. Sci. & Software Eng., Concordia Univ. - Montreal, Montreal, QC, Canada – sequence: 2 givenname: Weiyi surname: Shang fullname: Shang, Weiyi email: shang@encs.concordia.ca organization: Dept. of Comput. Sci. & Software Eng., Concordia Univ., Montreal, QC, Canada  | 
    
| BookMark | eNotj81KAzEYRSPowlZXLt3MC8yYL78TXJWh2kLBARXclfx80cCYKdMo9u1t0dXdHA7nzsh5HjMScgO0AaDmbt31XcMo6AbOyAwkbxWVXL5dkvvn8hUOKb9X5QOrfsJvO2D2WI2xWv543JU05mplcxhO0CKXVPe2FJzy_opcRDvs8fp_5-T1YfnSrerN0-O6W2xqy1pdauOjoRajdccCjFExy5SgLrROaC4APCD1kluvgxISDEAIEYR2RhnvNJ-T2z9vQsTtbkqfdjpstVHHI4z_AqCWQxo | 
    
| CODEN | IEEPAD | 
    
| ContentType | Conference Proceeding | 
    
| DBID | 6IE 6IL CBEJK RIE RIL  | 
    
| DOI | 10.1109/ICPC.2017.1 | 
    
| DatabaseName | IEEE Electronic Library (IEL) Conference Proceedings IEEE Xplore POP ALL IEEE Xplore All Conference Proceedings IEEE Electronic Library (IEL) IEEE Proceedings Order Plans (POP All) 1998-Present  | 
    
| DatabaseTitleList | |
| Database_xml | – sequence: 1 dbid: RIE name: IEEE Electronic Library (IEL) url: https://proxy.k.utb.cz/login?url=https://ieeexplore.ieee.org/ sourceTypes: Publisher  | 
    
| DeliveryMethod | fulltext_linktorsrc | 
    
| EISBN | 153860535X 9781538605356  | 
    
| EndPage | 331 | 
    
| ExternalDocumentID | 7961532 | 
    
| Genre | orig-research | 
    
| GroupedDBID | 6IE 6IL CBEJK RIE RIL  | 
    
| ID | FETCH-LOGICAL-a287t-9cf90aefab201eff62a2640bd8b473411c1e0c53ac7d6451911ddf147b969cb73 | 
    
| IEDL.DBID | RIE | 
    
| IngestDate | Thu Jun 29 18:38:41 EDT 2023 | 
    
| IsPeerReviewed | false | 
    
| IsScholarly | false | 
    
| Language | English | 
    
| LinkModel | DirectLink | 
    
| MergedId | FETCHMERGED-LOGICAL-a287t-9cf90aefab201eff62a2640bd8b473411c1e0c53ac7d6451911ddf147b969cb73 | 
    
| PageCount | 4 | 
    
| ParticipantIDs | ieee_primary_7961532 | 
    
| PublicationCentury | 2000 | 
    
| PublicationDate | 2017-May | 
    
| PublicationDateYYYYMMDD | 2017-05-01 | 
    
| PublicationDate_xml | – month: 05 year: 2017 text: 2017-May  | 
    
| PublicationDecade | 2010 | 
    
| PublicationTitle | 2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC) | 
    
| PublicationTitleAbbrev | ICPC | 
    
| PublicationYear | 2017 | 
    
| Publisher | IEEE | 
    
| Publisher_xml | – name: IEEE | 
    
| Score | 1.7417636 | 
    
| Snippet | Modern programming languages, such as Java and C#, typically provide features that handle exceptions. These features separate error-handling code from regular... | 
    
| SourceID | ieee | 
    
| SourceType | Publisher | 
    
| StartPage | 328 | 
    
| SubjectTerms | C# languages Computer crashes empirical software engineering exception flow analysis exception handling comprehension Java Libraries object-oriented programming Software static analysis Wrapping  | 
    
| Title | Studying the Prevalence of Exception Handling Anti-Patterns | 
    
| URI | https://ieeexplore.ieee.org/document/7961532 | 
    
| hasFullText | 1 | 
    
| inHoldings | 1 | 
    
| isFullTextHit | |
| isPrint | |
| link | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV3PS8MwFA5zJ08qm_ibHDyarmmzJMWTjI0pTHZwsNvIjxcQoRPtYPjXm9fWieLBWyiB9iWQ773m-75HyLXT0ktkNWIPWSbAG2YzIVkesVgbLoOuHW9mj3K6EA_L4bJDbnZaGACoyWeQ4LC-y_drt8FfZQNVYHoSD9w9pWWj1WoldzwtBvej-Qi5WirhP1ql1EgxOSCzr3c0BJGXZFPZxH38sl_870cckv63Jo_Od2hzRDpQ9sgt0gBRqERjHkfRjsnUIiK6DnS8bRkrdIpOCjjprqye2bx21Czf-2QxGT-Npqxth8BMLGsqVrhQpAaCsTFICEFmJmYzqfXaChXBiDsOqRvmxikv0TWGc-8DF8oWsnBW5cekW65LOCEUuM-UyVyeA9aDoDWIwKUBKbwQFk5JDwNfvTaOF6s25rO_H5-TfVz2hgZ4QbrV2wYuI1RX9qreo0_8ZpYZ | 
    
| linkProvider | IEEE | 
    
| linkToHtml | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwjV3PS8MwFA5jHvSksom_7cGj7Zo2TVs8ydjodBs7bLDbyI8XEKEb2oH415uX1oniwVsIgeQRyPeSfN_3CLlVGdccWY1YQ9ZnoIUvI8b92GJxJig3mXO8mUx5sWCPy2TZInc7LQwAOPIZBNh0f_l6rbb4VNZLc0xP7IG7lzDGklqt1YjuaJj3Rv1ZH9laaUB_FEtxWDE8JJOvWWqKyEuwrWSgPn4ZMP53GUek-63K82Y7vDkmLSg75B6JgChV8mwm56Ehk3AyIm9tvMF7w1nxCvRSwEEPZfXsz5ynZvnWJYvhYN4v_KYggi_sxabyc2XyUIAR0gYJxvBI2HwmlDqTLLVwRBWFUCWxUKnm6BtDqdaGslTmPFcyjU9Iu1yXcEo8oDpKRaTiGPBGCFkGzFAugDPNmIQz0sHAV5va82LVxHz-d_cN2S_mk_FqPJo-XZAD3IKaFHhJ2tXrFq4scFfy2u3XJwiqmWY | 
    
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rft.genre=proceeding&rft.title=2017+IEEE%2FACM+25th+International+Conference+on+Program+Comprehension+%28ICPC%29&rft.atitle=Studying+the+Prevalence+of+Exception+Handling+Anti-Patterns&rft.au=Bicalho+De+Padua%2C+Guilherme&rft.au=Shang%2C+Weiyi&rft.date=2017-05-01&rft.pub=IEEE&rft.spage=328&rft.epage=331&rft_id=info:doi/10.1109%2FICPC.2017.1&rft.externalDocID=7961532 |