maybe we should move the try catch into the ``handler->update()`` itself?