Вашият код е в персонализирано пространство от имена:
namespace StatCollector;
така че този код:
catch (Exception $ex)
търси клас изключение на \StatCollector\Exception
, което не е това, което е хвърлено:\Exception
е.
Тъй като Error
и Exception
класовете са в корена пространство от имена, трябва да направите:
catch (\Exception $ex)
и/или:
catch (\Error $ex)
или просто:
catch (\Throwable $t)
след това следвайте и на Бил Карвин съвет по-горе.