在PhpStorm中编写以下代码时,它会警告"Unhandled\Exception":
Flight::where('flight_number', $flight_number)->delete();
Run Code Online (Sandbox Code Playgroud)
这几乎就是Laravel网站上记录的内容.如果没有找到删除的记录,我不相信这会抛出错误?
这真的应该包含在try/catch中,并且空捕获,因为它不是真的错误吗?特别是因为在我的实例中,如果没有发现任何记录被删除就没问题.
PhpStorm警告你的原因很简单.docblock Illuminate\Database\Eloquent\Model::delete()包含此@throws \Exception注释:
/**
* Delete the model from the database.
*
* @return bool|null
*
* @throws \Exception
*/
public function delete()
Run Code Online (Sandbox Code Playgroud)
PhpStorm并不关心你如何打电话delete()或者是否flight_number属于PK桌子.它无法知道这些事情.所有它知道的是@throws上面提到的注释,它通过提醒你这件事来尝试有用.
您可以忽略该警告,为整个项目禁用它(在"设置" - >"编辑器" - >"检查" - >"错误处理" - >"未处理的异常"中),或者只能为调用该delete()方法的语句禁用它.
对于最后一个选项,您可以:
/** @noinspection PhpUnhandledExceptionInspection */
Run Code Online (Sandbox Code Playgroud)
在delete()电话会议前的另一条线路上.这是一个特殊的docblock注释,它告诉PhpStorm忽略可能由其后面的语句抛出的未处理异常.
或者,您可以将插入符号放在delete()通话上,按,然后Alt-Enter从打开的上下文菜单中选择"添加@throws标记" - >"抑制语句".它会为您添加评论.
这是最好的方法,如果您确定delete()不会抛出任何异常(它在模型未正确定义时抛出;这不是运行时错误,而是编码错误;它必须永远不会在模型编码后发生).
使其静音的另一种方法是@throws \Exception在包含调用的函数的docblock中添加注释delete().这让PhpStorm知道在这个级别上没有处理异常,当然,如果你不在调用这个函数的代码中处理异常,它会发出警告.
| 归档时间: |
|
| 查看次数: |
477 次 |
| 最近记录: |