gpt4 book ai didi

PhpStorm 检查错误或错误代码? try block 中未抛出的异常是意外的

转载 作者:可可西里 更新时间:2023-10-31 23:01:00 32 4
gpt4 key购买 nike

我正在使用 PhpStorm 并在我拥有实例的子类的父类中抛出自定义异常。

我没有从子类的父调用中捕获异常,因为我希望捕获它是对子类实例进行调用的代码的责任。

PhpStorm 提示捕获的异常没有在 try block 中抛出,但是父方法确实抛出它,这个方法是从 try block 中调用的子方法调用的。

这是检查员的错误还是我真的做错了什么?

下面是一些复制问题的示例代码:

<?php

class testE extends \Exception {
}


class parentClass {

public function testMethod() {
throw new testE('test exception');
}
}

class childClass extends parentClass {

public function doSomething() {
$this->testMethod();
}
}

$test = new childClass;
try {
$test->doSomething();
} catch(testE $e) {
// ^--- why does this report no throw in try?
// Exception 'testE' is never thrown in the corresponding try block
// Will this still work even though phpstorm complains?
}

这是一张图片

screenshot

最佳答案

如有疑问,请使用 PhpStorm 检查您的评论:

class testE extends \Exception
{
}

class parentClass
{

/**
* @throws testE <- added this
*/
public function testMethod()
{
throw new testE('test exception');
}
}

class childClass extends parentClass
{

/**
* @throws testE <- added this
*/
public function doSomething()
{
$this->testMethod();
}
}

$test = new childClass;
try {
$test->doSomething();
} catch (testE $e) {
// ^--- why does this report no throw in try?
// Exception 'testE' is never thrown in the corresponding try block
// Will this still work even though phpstorm complains?
}

瞧,发牢骚的 PhpStorm 突然间理解了您的代码,如下所示:

enter image description here

关于PhpStorm 检查错误或错误代码? try block 中未抛出的异常是意外的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49413404/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com