6
1 Comment

NotImplemented exception

Have you even written a comment like this one?

function foo(?Bar $bar): void {
    // TODO: handle nulls
    ...
}

Previously, I had those, too.

Not anymore.

I found that throwing the NotImplemented exception instead of a mere comment makes more sense to me - whenever you hit that line, the exception forces you to pay off this bit of technical debt:

function foo(?Bar $bar): void {
    if (!$bar) {
        throw new NotImplemented();        
    }
    
    ...
}

Only recently, I have found a really nice feature in PhpStorm called Exception Breakpoints. The idea is that whenever a specified exception is thrown, the debugger stops at the line that throws the exception.

And it's a perfect match for the NotImplemented exception. After configuring it, the debugger stop anytime when the execution hits a feature, or a special case, that is not implemented yet.

Configure it in Run -> View Breakpoints by pressing + -> PHP Exception Breakpoints, entering the full exception class name, and pressing OK:

Exception Breakpoints

Just wanted to share, I hope you'll find it useful.

  1. 2

    Very much agreed. Forcing the caller to think about unhandled cases prevents a lot of headaches in the long run. I am a huge fan of Kotlin, one of the reasons why is its TODO function which is the best of both worlds; it throws a NotImplementedError and is recognized by IDEs as an unhandled todo case.

Trending on Indie Hackers
After 10M+ Views, 13k+ Upvotes: The Reddit Strategy That Worked for Me! 42 comments Getting first 908 Paid Signups by Spending $353 ONLY. 24 comments 🔥Roast my one-man design agency website 21 comments I talked to 8 SaaS founders, these are the most common SaaS tools they use 20 comments What are your cold outreach conversion rates? Top 3 Metrics And Benchmarks To Track 19 comments Hero Section Copywriting Framework that Converts 3x 12 comments