add some comments here to explain why we need catch this exception.