如何禁用特定异常的警告?

问题描述 投票:0回答:3

每当我在代码中抛出异常而未在文档块中明确说明时,我都会收到警告:

我知道这可以通过添加

@throw
标签来修复,但警告实际上并不是 100% 正确,因为我确实处理了
/app/Exceptions/Handler.php
中的异常。我想禁用这个异常的警告。这在 PHPStan 中可能吗?我在文档中没有找到任何内容,但在这篇博文中https://phpstan.org/blog/bring-your-exceptions-under-control似乎可以有未经检查和检查的异常,而且我相信未经检查异常不需要声明。但是,在
phpstan.neon
中将我的异常标记为未选中并不能消除错误:

 exceptions:
        uncheckedExceptionClasses:
            - 'app\Exceptions\AuthenticationException'

我还注意到

Symfony\Component\HttpKernel\Exception\NotFoundHttpException
异常不会触发警告。我不知道为什么,但似乎已经存在一组不需要
@throw
的例外情况。

如何抑制异常警告?

laravel exception phpstorm phpstan
3个回答
2
投票

正如 Bob 正确指出的那样,这来自 PhpStorm 本身,而不是 PHPStan。

您可以将任何异常添加到未检查的异常列表中,这样它就会被 PhpStorm 忽略

Settings/Preferences | PHP | Analysis

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


至于为什么

Symfony\Component\HttpKernel\Exception\NotFoundHttpException
没有被报道——他们有不同的父母:

  • NotFoundHttpException
    扩展
    HttpException
    扩展
    \RuntimeException
    (位于未选中列表中)
  • AuthenticationException
    延伸
    \Exception

2
投票

首先,这是 PhpStorm 提示,而不是 PHPStan。

docblock 中

@throw
的要点是向您展示您的方法可以抛出哪些异常。如果其他开发人员或您自己在其他地方重用该方法,PhpStorm 将立即提醒您该异常,并建议您将其包装在 try-catch 中或将其移至 docblock 以进行更高级别的处理。 所以我认为将此异常指向
@throw
没有问题。


0
投票

有什么方法可以抑制针对特定于类的异常的警告吗?例如,如果 Doctrine 存储库方法使用

getOneOrNullResult
方法,该方法会生成
\Doctrine\ORM\NonUniqueResultException
,并且我知道它不会发生,因为我正在通过具有唯一索引的列搜索对象。比如:

/**
 * @catch \Doctrine\ORM\NonUniqueResultException <-- Disable phpStorm warning "Unhandled \Doctrine\ORM\NonUniqueResultException"
 */
public function findUserBySomeUniqueAttr(string $uniqueAttr): ?User
{
    return $this->_em->createQuery('Some query')
        ->setParameter('someAttr', $uniqueAttr)
        ->getOneOrNullResult();
} 
© www.soinside.com 2019 - 2024. All rights reserved.