I do get a warning whenever I throw an exception in my code without explicitly stating it in the docblocs:
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.
How can I suppress the warning for my exception?
2
Answers
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
.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
As to why
SymfonyComponentHttpKernelExceptionNotFoundHttpException
is not reported — they have different parents:NotFoundHttpException
extendsHttpException
extendsRuntimeException
(which is in unchecked list)AuthenticationException
extendsException