Is there a way to catch an Exception without having to create a variable?

Matthieu Napoli picture Matthieu Napoli · Jan 27, 2011 · Viewed 26.6k times · Source

In PHP, I sometimes catch some exceptions with try/catch :

try {
    ...
} catch (Exception $e) {
    // Nothing, this is normal
}

With that kind of code, I end up with the variable $e that is created for nothing (lots of resources), and PHP_MD (PHP Mess Detector) creates a warning because of an unused variable.

Answer

yivi picture yivi · May 14, 2020

Starting with PHP 8, it is possible to use a non-capturing catch.

This is the relevant RFC, which was voted favourably 48-1.

Now it will be possible to do something like this:

try {
    readFile($file);
} catch (FileDoesNotExist) {
    echo "File does not exist";
} catch (UnauthorizedAccess) {
    echo "User does not have the appropriate permissions to access the file";
    log("User attempted to access $file");
}

With this, for some edge cases where the exception details are not relevant and exception type already provides all the necessary context, it will be possible to catch the exception without creating a new variable.