I had an issue that ultimately boiled down to not checking that a value was false before proceeding.
I tried to put a try/catch around it for debugging, but strangely that didn't help.
Here's a minimal example:
    try
    {
        $test = false;
        $test->format('Y-m-d');
    }
    catch (\Exception $e)
    {
    }
The error log shows that it's a fatal error. Does PHP have documentation on why this wouldn't throw a normal error?