PHP: try/catch fail

exception, laravel-3, mysql, php

Solution

Based on your comment here's your problem

namespace Something;

class myClass {

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

In this case you're typehinting that you're catching an exception but you don't specify a scope so PHP is assuming you're catching `\Something\Exception`

The fix is pretty simple. Adding a `\` tells PHP to catch anything that is, or extends, the base `Exception` class

catch (\Exception $e)

Problem

I'm running WAMSERVER 2.4 (32-bit) with PHP 5.4.16, this is a Laravel 3 project. In a `try` block, which I'm expecting to fail, I am submitting a duplicate row for insertion against a uniqueness constraint. Instead of handling the exception in the `catch`, it's throwing an "Unhandled Exception" error from the `try` block and failing. ``` // 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); } ``` Here's the error it throws: Unhandled Exception Message: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '695d7f0b-53b8-11e3-93fc-c12677e410a5-0-0-14-' for key 'unique' SQL: INSERT INTO `person_contact` (`person_uuid`,`phone_id`) VALUES (?, ?) Bindings: array( 0 => '695d7f0b-53b8-11e3-93fc-c12677e410a5', 1 => 14) Location: C:\path\to\laravel\3_2_13\database\connection.php on line 263

Original source