我非常喜欢PhpStorm检测工具.他们帮助我编写更好的代码.现在我有以下情况,我问自己处理这种情况的最佳方法是什么.
我有一个带有一些前置条件的函数f,例如在下面的代码中:
/**
* @param int $x
* @throws PreconditionException x is negative
*/
public function f(int $x): int
{
if ($x < 0) {
throw new PreconditionException("the input x is negative");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我在某个地方使用这个函数让我们说以下内容:
f(5);
Run Code Online (Sandbox Code Playgroud)
现在,PhpStorm以"未处理的异常"警告我.但在这种情况下,我知道不会抛出异常,所以添加一个try块并不是真的有意义.我应该简单地忽略这个警告,或者最好的方法是什么?
从 phpStorm 2018.1 版开始,您可以从分析中排除任何异常。转到preferences->Languages & Frameworks->PHP并打开Analysis选项卡。
您可以在此处添加例外Unchecked Exceptions列表
@noinspection标签可用于指示 PhpStorm 取消检查。标签可以用在行上方、方法上方或文件上方<?php单词之后:
/** @noinspection PhpDocMissingThrowsInspection */
/**
*
* Cancels order.
*
* @return bool
*/
public static function cancel()
{
if (!self::inProgress()) return false;
/** @noinspection PhpUnhandledExceptionInspection*/
static::current()->delete();
return true;
}
Run Code Online (Sandbox Code Playgroud)
检查列表可以在这个要点中找到:https : //gist.github.com/discordier/ed4b9cba14652e7212f5
您也可以通过界面禁用它。ALT+ENTER然后向右箭头和Suppress ...

正确的方法是@throws在文档中添加标签(PhpStorm 手册)。例如:
/**
* @param $userId
* @return array|null
* @throws \Exception <---------------------------
*/
public static function send($userId)
{
if (empty($userId)) {
throw new \Exception("User ID is missing", 1);
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
小智 6
对我有帮助的是@throws设置Null
例子:
/**
* @return SomeObject
* @throws Null
*
*/
Run Code Online (Sandbox Code Playgroud)