CakePHP 3 - 捕捉错误

4
use Cake\Core\Exception\Exception;


for($i=1; $i<count($values); $i++) {
        $entity = $table->newEntity();

        // irrelevant code

        try {
            $table->save($entity);
        } catch (Exception $e) {
            $errors[$i-1] = $values[$i];
        } finally {
            if(count($errors) == 0)
                $this->Flash->success('All rows are successfully imported. ');
            else {
                $this->Flash->error('Not all rows are successfully imported. ');
                debug($errors);
            }
        }
    }

我想要做的是捕获冲突的实体并将它们显示给用户。
我得到的是一个PDO异常。那些没有冲突的仍然被插入,这正是我想要的。
所以,我只想捕获PDO异常,但如何做呢?

可能是Catch Exception in Cakephp 3 : not working的重复问题。 - ndm
1个回答

4

如果你只想捕获特定的异常,可以在catch块中指定异常类。

try
{}
catch (\PDOException $e)
{}

我知道,但这不是我的问题所在。我已经做过了。 - user5853948
1
你想要做什么? - Chetan Ameta
2
@dnns 你可能和Gerd一样忘了前导命名空间分隔符。PDOException位于全局命名空间中。 - ndm
确实感谢。已经用''解决。 - user5853948
自从昨天开始,我一直面临着同样的问题。一直在尝试使用try{}catch(PDOException $e)与前导\或不带\。但是没有得到任何结果。 - Yusuf
所以,要么它不是PDOException,要么它是一个具有相同名称但位于不同命名空间中的异常。前导斜杠意味着它在全局命名空间中捕获PDOException。 - Gerd K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接