Добрый вечер!
Вкратце ситуация такова. Есть некоторые библиотеки, наподобие GeoIp, которые подключаются в проект динамически на определенных страницах. Может быть ситуация, когда библиотеки нет. Стандартно тогда пользователю вываливается куча непонятного ему текста. Я же хочу перехватить исключение, обработать его и вывести пользователю красивое уведомление.
Вариант с
file_exists отмел сразу, т.к. он медленный и нерациональный (два раза запрашиваем файл вместо одного). И нашел такой:
try {
if(! @include_once(LIBS_PATH . "geoip.inc")) {
throw new Exception("Error: geoip.inc not found", 1);
}
} catch (Exception $e) {
$this->view->setError($e->getMessage());
}
Использование собаки в коде - безусловно, плохой стиль. Однако в данном случае как поступить? Жертвовать производительностью, используя
file_exists, забыть про
include и читать файл вручную при помощи
fopen \
fread, или же использование собаки в подобных случаях (когда системная ошибка перехватывается программистом) вполне юзабельно?..
Буду благодарен за советы, спасибо.