From Error Forwarding to Intentional Error Design in Software Development
By
andylokandy
Hand-rolled, kettle-boiled, baked to perfection. Worth every minute at the bakery.
Summary
The article critiques traditional error handling in software development as mere 'error forwarding' where errors lose context as they bubble up through stack layers. It advocates for intentional error design where errors are treated as first-class citizens with rich context, clear ownership, and actionable information. The piece contrasts reactive error handling with proactive error design, emphasizing that well-designed errors should tell a complete story about what went wrong, who owns it, and how to fix it.
Key quotes
· 5 pulledThe error has successfully bubbled up through 20 layers of your stack, preserving its original message perfectly, yet losing every scrap of meaning along the way.
We have a name for this. We call it 'Error Handling.' But in reality, it's just Error Forwarding. We treat errors like hot potatoes—catch them, wrap them (maybe), and throw them up the stack as fast as possible.
Error Design means treating errors as first-class citizens of your codebase. They're not just exceptions to be thrown; they're messages to be crafted.
A well-designed error should tell a complete story: what went wrong, who owns it, and how to fix it.
Stop forwarding errors. Start designing them.
You might also wanna read
Three Years In: A Senior Engineer's Reflection on AI's Impact on the Software Development Role
A senior engineer reflects on the long-term sustainability of AI tools in software development, three years into deep organizational adoptio
Three Years In: A Senior Engineer's Reflection on AI's Impact on the Software Development Role
A senior engineer reflects on the long-term sustainability of AI tools in software development, three years into deep organizational adoptio
Bijou64: A variable-length integer encoding that's both correct and accidentally fast
This article describes the development of bijou64, a variable-length integer (varint) encoding created for the Subduction CRDT sync protocol
Bijou64: A variable-length integer encoding that's both correct and accidentally fast
This article describes the development of bijou64, a variable-length integer (varint) encoding created for the Subduction CRDT sync protocol
Domain Expertise, Not Code, Is the True Competitive Advantage in Software
The article argues that true competitive advantage ("moat") in software has always been domain expertise—deep understanding of the business
A Formal Proof That Jira Is Turing-Complete via Minsky Machine Implementation
This article provides a formal proof that Jira (Atlassian's project-tracking tool) is Turing-complete by demonstrating how to build a Minsky
