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.