Страницы

Поиск по вопросам

пятница, 22 марта 2019 г.

PHP exeption show up

class Search { private $search_string = null;
public function __construct() { $this->db = Database::getInstance();
// prepare search string $this->search_string = (isset($_GET['search']) && !empty($_GET['search']))? $_GET['search'] : null; if ($this->search_string === null) { throw new Exception(SEARCH_STRING_EMPTY, 99); } ... } } try { $search = new Search(); } catch (Exception $e) { echo $e->getMessage(); ... }
Передаю пустую строку, выкидываю ексепшен, выводится ошибка php Exception: in ... (на подобии ошибки PHP_NOTICE и.т.д.), дальше его ловит мой блок catch. Как от этого избавится?
На версии PHP 5.2 этого нету, а на php 5.4 есть... Пользуюсь OpenServer-ом. error_reporting(0); прописан...
UPD: скрин проблемы


Ответ

TL;DR: за это отвечает настройка xdebug.show_exception_trace, достаточно просто отключить ее. По расцветке также можно угадать, что это вывод xdebug, и в случае аналогичных непонятных происшествий начинать копать оттуда.
Сама по себе эта штука входит в пакет забавного функицонала xdebug (как минимум, есть еще xdebug.sсream, подавляющий оператор @), отвечающего за поиск архитектурных ошибок. Конкретно эта настройка позволяет найти все подавленные исключения и покарать тех, кто их проглатывает без обработки (идеальная программа должна работать без исключений вообще), но в продакшене и тестинге эта опция, конечно, должна быть отключена.

Комментариев нет:

Отправить комментарий