add exception catch