skip to Main Content

I do get a warning whenever I throw an exception in my code without explicitly stating it in the docblocs:
enter image description here

I know this can be fixed by adding @throw tags, but the warning is actually not 100% true, as I do handle the exception in /app/Exceptions/Handler.php. I would like to disable the warning for this single exception. Is this possible in PHPStan? I have not found anything in the docs, but in this blog post https://phpstan.org/blog/bring-your-exceptions-under-control it seems that one can have unchecked & checked exceptions, and I believe unchecked exceptions do not need to be declared. However, marking my exception unchecked in phpstan.neon does not get rid of the error:

 exceptions:
        uncheckedExceptionClasses:
            - 'appExceptionsAuthenticationException'

I also noticed that the SymfonyComponentHttpKernelExceptionNotFoundHttpException exception does not trigger the warning. I am not sure why, but it seems there is already a set of exceptions where no @throw is needed.

enter image description here

How can I suppress the warning for my exception?

2

Answers


  1. First of all, this is a PhpStorm hint, not a PHPStan.

    The point of @throw in docblock is to show you what exceptions your method can throw. If another developer or yourself reuses that method elsewhere, PhpStorm will immediately remind you of that exception and suggest you either wrap it in try-catch or move it to docblock for higher-level processing.
    So I see no problem pointing this exception at @throw.

    Login or Signup to reply.
  2. As Bob has correctly stated this comes from PhpStorm itself and not PHPStan.

    You can add any exception to the Unchecked Exception list so it will be ignored by PhpStorm at Settings/Preferences | PHP | Analysis

    https://www.jetbrains.com/help/phpstorm/php-missing-throws-tag-s.html

    enter image description here


    As to why SymfonyComponentHttpKernelExceptionNotFoundHttpException is not reported — they have different parents:

    • NotFoundHttpException extends HttpException extends RuntimeException (which is in unchecked list)
    • AuthenticationException extends Exception
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search