Exceptions can jump the execution flow across methods, classes, or even layers.
They make the code harder to follow and understand.
Your system can throw exceptions for multiple reasons:
  • A consumer sends bad arguments.
  • An IO operation may fail.
  • In distributed systems, a network can fail or produce a delay.
  • You encounter an unexpected null value.
This is how you make it less complex:
  • Use exceptions for exceptional conditions, not regular control flow.
  • If you have to throw it, write clear error messages and include context.
  • Prefer specific exceptions over general ones.
  • Use ‘finally’ blocks or language-specific constructs to ensure resources are released.
  • Keep your handling logic simple and avoid deep nesting.
  • Test your code for exception handling.
It is already hard to write code, but it is even harder to deal with special conditions.