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.