However, I will not call die. I find it frustrating when modules die.
While I doubt Bod, hailing from (working-class) Coventry UK, would be permitted to enter the hallowed Long Room at Lords to hurl abuse at the Australian cricket team during the Ashes test match last weekend, I'm sure he won't be stumped by this meditation's title ... unlike monks from non-cricket-playing nations, doubtless unfamiliar with Bazball :).
Bodball, you may recall I once scolded you for asking "what should I test?" long after you'd released your module. I similarly urge you to get into the habit of thinking long and hard about your module's error handling well before you release it, and for the same reasons. Like TDD, it's crucial to perform this error-handling analysis early because doing so will likely change your module's interface.
Further to the excellent general advice you've already recieved from afoken, I'm interested to learn more about the errors you commonly encounter in practice when using your Business::Stripe::Webhook module. I also urge you to add an expanded "Error Handling" section to your module's documentation.
General Error Handling Advice
Don't fail silently. Failure is inevitable; failing to report failures is inexcusable. Failing silently causes the following problems:
- Users wonder whether something has gone wrong. ("Why did my order not go through?")
- Customer support wonders what caused a problem. ("The log file gave no indication of a problem")
Embrace your software's fallibility. Assume that humans will make mistakes using your software. Try to minimize ways for people to misuse your software, but assume that you can't completely eliminate misuse. Therefore, plan error messages as you design software.
-- General error handling advice from Google Error Messages course
Programming Tips
What should a function do if it cannot perform its allocated task?
Return failure when:
Throw an exception when:
This is not a black and white issue. Experience and good taste are required.
Business::Stripe::Webhook Error Handling
Though unfamiliar with your Business::Stripe::Webhook domain, I briefly browsed your module's documentation. Good to see you've already written a short "Errors and Warnings" section in its documentation; I suggest you improve and expand this section for the next release.
AFAICT, your basic error handling strategy is for your methods to set the error property, for example:
with the module user expected to check this error property after calling each method. Is that right?$vars{'error'} = 'Missing payload data'
I think a clear statement of your overall error-handling strategy, combined with a couple of real-world examples of handling common errors you've experienced when using your module, would be invaluable to your users ... and may cause you to tweak your module's error-handling code and interface ... which is why this step is ideally performed well before release. :)
See Also
Updated: minor changes to wording were made shortly after posting. Added more references to the See Also section.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: EyeBall stumps BodBall
by stevieb (Canon) on Jul 07, 2023 at 01:29 UTC | |
Re: EyeBall stumps BodBall
by hippo (Archbishop) on Jul 07, 2023 at 07:09 UTC | |
by eyepopslikeamosquito (Archbishop) on Jul 07, 2023 at 08:18 UTC | |
Re: EyeBall stumps BodBall (Error Handling)
by eyepopslikeamosquito (Archbishop) on Jul 09, 2023 at 14:01 UTC | |
by hv (Prior) on Jul 09, 2023 at 17:08 UTC | |
by etj (Priest) on May 19, 2024 at 13:06 UTC | |
by stevieb (Canon) on May 20, 2024 at 06:48 UTC | |
Re: EyeBall stumps BodBall
by Bod (Parson) on Jul 08, 2023 at 17:46 UTC | |
by eyepopslikeamosquito (Archbishop) on Jul 17, 2023 at 09:07 UTC | |
by Bod (Parson) on Jul 23, 2023 at 21:07 UTC | |
by eyepopslikeamosquito (Archbishop) on Jul 24, 2023 at 08:58 UTC | |
by Bod (Parson) on Aug 01, 2023 at 22:24 UTC | |
| |
by kcott (Archbishop) on Jul 09, 2023 at 11:50 UTC | |
by Bod (Parson) on Jul 23, 2023 at 21:13 UTC | |
by etj (Priest) on May 19, 2024 at 13:23 UTC |