PHP:try / catch失败

时间:2014-01-06 18:43:45

标签: php mysql exception laravel-3

我正在使用PHP 5.4.16运行WAMSERVER 2.4(32位),这是一个Laravel 3项目。

在我期望失败的try块中,我提交了一个重复行,用于插入唯一性约束。
它没有处理catch中的异常,而是从try块中抛出“未处理的异常”错误并失败。

    // This throws an error if the relationship already exists.
    // If that happens, just pass it to the logger and move on.
    try {
        $entity->$pivotMethod()->attach( $rowData->get_key(), $ext );
    } catch (Exception $e) {
        $err = $e->getMessage()."\n";
        error_log($err);
    }

这是它抛出的错误: 未处理的例外

消息:

  

SQLSTATE [23000]:完整性约束违规:1062重复条目'695d7f0b-53b8-11e3-93fc-c12677e410a5-0-0-14-'用于关键'独特'

     

SQL:INSERT INTO person_contactperson_uuidphone_id)VALUES(?,?)
  绑定:数组(0 =>'695d7f0b-53b8-11e3-93fc-c12677e410a5',1 => 14)

     

位置:第263行的C:\ path \ to \ laravel \ 3_2_13 \ database \ connection.php

1 个答案:

答案 0 :(得分:8)

根据您的评论,这是您的问题

namespace Something;

class myClass {

    function method() {
          try {
        $entity->$pivotMethod()->attach( $rowData->get_key(), $ext );
       } catch (Exception $e) {
        $err = $e->getMessage()."\n";
        error_log($err);
       }
    }
}

在这种情况下,你输入的是你正在捕捉异常,但你没有指定范围,所以PHP假设你正在捕捉\Something\Exception

修复非常简单。添加\告诉PHP捕获基础Exception

的任何内容或扩展内容
catch (\Exception $e)