PHP 7 replaced most fatals with an Error you can catch

Calling a method on null used to end the request with a fatal that no handler could intercept, which is why every framework had a register_shutdown_function checking error_get_last(). Most of those are now genuine exceptions.

try {
    $order->total();          // $order is null
} catch (Error $e) {
    Log::critical($e->getMessage(), ['trace' => $e->getTraceAsString()]);
    throw $e;
}

The practical gain is the stack trace: a fatal gave a file and a line, an Error gives the whole call path, which is usually the difference between a five-minute fix and an afternoon. Keep the shutdown handler anyway — memory exhaustion and a few parse-time failures are still not catchable, and those are exactly the ones you most want reported.