cover-img

Code Smell 80 - Nested Try/Catch

Exceptions are a great way of separating happy path versus trouble path. But we tend to over-complicate our solutions.

16 July, 2023

0

0

0

Exceptions are a great way of separating happy path versus trouble path. But we tend to over-complicate our solutions.

TL;DR: Don't nest Exceptions. Nobody cares of what you do in the inner blocks.

Problems

  • Readability

Solutions

  1. Refactor

Sample Code

Wrong

try {
transaction.commit();
} catch (e) {
logerror(e);
if (e instanceOf DBError) {
try {
transaction.rollback();
} catch (e) {
doMoreLoggingRollbackFailed(e);
}
}
}

// Nested Try catchs
// Exception cases are
// more important than happy path
// We use exceptions as control flow

Right

try {
transaction.commit();
} catch (transactionError) {
this.withTransactionErrorDo(
transationError, transaction);
}

// transaction error policy is not defined in this function
// so we don't have repeated code
// code is more readable
// It is up to the transaction
// and the error to decide what to do

Detection

We can detect this smell using parsing trees.

Tags

  • Exceptions

Conclusion

Don't abuse exceptions, don't create Exception classes no one will ever catch, and don't be prepared for every case (unless you have a good real scenario with a covering test).

The happy path should always be more important than exception cases.

Relations

Code Smell 73 - Exceptions for Expected Cases

Code Smell 26 - Exceptions Polluting

More Info

Credits

Photo by David Clode on Unsplash

Thanks to @Rodrigo for his inspiration

%[https://twitter.com/_rodrigomd/status/1403359513965731843]


Writing software as if we are the only person that ever has to comprehend it is one of the biggest mistakes and false assumptions that can be made.

Karolina Szczur

Software Engineering Great Quotes


This article is part of the CodeSmell Series.

How to Find the Stinky Parts of your Code

0

0

0

Maxi Contieri

Buenos Aires, Argentina

🎓Learn something new every day.📆 💻CS software engineer 👷coding👨🏽‍🏫teaching ✍🏾writing 🎨Software Design 🏢SOLID 🌉TDD 👴Legacy 💩Code Smells

More Articles

Showwcase is a professional tech network with over 0 users from over 150 countries. We assist tech professionals in showcasing their unique skills through dedicated profiles and connect them with top global companies for career opportunities.

© Copyright 2024. Showcase Creators Inc. All rights reserved.