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...

Full description

Saved in:
Bibliographic Details
Published in2017 IEEE/ACM 25th International Conference on Program Comprehension (ICPC) pp. 328 - 331
Main Authors Bicalho De Padua, Guilherme, Shang, Weiyi
Format Conference Proceeding
LanguageEnglish
Published IEEE 01.05.2017
Subjects
Online AccessGet full text
DOI10.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