use explicit failure management

Ok let's use the `scala.util.Try` concept that allows people to
explicitely manage exceptions on the heap instead of on the stack.
This allows among other thing to catch all exceptions and log it