Этот гигантский try вместе с catch'ами напрашивается на вынос в отдельную функцию.