Search code examples
phpexceptionerror-handlingtry-catchphp-8

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


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

try {
    ...
} catch (Exception $e) {
    // Nothing, this is a test that an exception is thrown.
}

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.


Solution

  • 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.