Su código está en un espacio de nombres personalizado:
namespace StatCollector;
entonces este código:
catch (Exception $ex)
está buscando una clase de excepción de \StatCollector\Exception
, que no es lo que se lanza:\Exception
es.
Desde el Error
y Exception
las clases están en la raíz espacio de nombres, debe hacer:
catch (\Exception $ex)
y/o:
catch (\Error $ex)
o simplemente:
catch (\Throwable $t)
entonces también siga Bill Karwin's consejos anteriores.