PHP:try/catch失败
我正在用PHP5.4.16运行Wamserver2.4(32位),这是一个Laravel3项目 在PHP:try/catch失败,php,mysql,exception,laravel-3,Php,Mysql,Exception,Laravel 3,我正在用PHP5.4.16运行Wamserver2.4(32位),这是一个Laravel3项目 在try块中(我预计会失败),我提交了一个重复的行,以根据唯一性约束进行插入。 它不是在catch中处理异常,而是从try块抛出一个“未处理的异常”错误并失败 // This throws an error if the relationship already exists. // If that happens, just pass it to the logger and mov
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:在联系人
(联系人id
,电话id
)中插入值(?,)绑定:数组(0=>695d7f0b-53b8-11e3-93fc-c12677e410a5',1=>14) 位置:C:\path\to\laravel\3\u 2\u 13\database\connection.php,第263行
根据你的评论,这是你的问题
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捕获属于或扩展基本异常的任何内容
catch (\Exception $e)
如果没有抛出异常,它将永远不会到达catch块+1是的!您必须抛出Exceptions您的块是否位于命名空间内的类中?请尝试\Exception
而不是执行该操作的Exception
(命名空间)!感谢来自德国的@Machavity和#Dan。。你们太聪明了:)+1我希望你们不仅仅是从评论中得到这个答案,DanFromGermany首先发现了:)我知道这个解决方案,因为几个月前我也遇到了同样的问题,但他的猜测首先出现的是你们上面的块是在命名空间中的类中吗?你很好不,这就是为什么我问它是否在名称空间中。我以前遇到过这种问题。当您这样键入提示时,PHP变得非常具体。除非您知道将捕获特定类型的异常,否则几乎总是最好使用\exception