add: better exception catch