refactor of exception