Це старе питання, але є ще один тонкий спосіб, як це повідомлення може відбутися. Це досить добре пояснено тут, у документах .
Уявіть це сценарій:
try {
// code that triggers a pdo exception
} catch (Exception $e) {
throw new MyCustomExceptionHandler($e);
}
І MyCustomExceptionHandlerвизначається приблизно так:
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage(), $e->getCode());
}
}
Це фактично спричинить новий виняток у користувальницькому обробці винятків, оскільки Exceptionклас очікує числа другого параметра у своєму конструкторі, але, PDOExceptionможливо, динамічно змінив тип повернення $e->getCode()до рядка.
Приблизним рішенням цього може бути визначення вашого користувальницького обробника винятків, наприклад:
class MyCustomExceptionHandler extends Exception {
public function __construct($e) {
parent::__construct($e->getMessage());
$this->code = $e->getCode();
}
}
$_GET['start_date']містить.