Ты подключил класс для преобразования ошибок в исключения, вызвал пользовательскую ошибку, завернул это в перехватчик исключений, вывел сообщение об ошибке
У автора вопроса в примере глубокое копирование, у вас только поверхностное - все объекты внутри будут по прежнему ссылаться на одну область памяти. Это может быть некритично, а может и быть.