As funções que são chamadas dentro do try são apenas funções de validação. Caso alguma delas perceba que algo inválido está ocorrendo, ela já mostra a correspondente mensagem de erro e retorna false. No caso da validarChildOf, ela mesmo lança a exceção.

Eu não alterei as funções verifyResearchGroupInstance e verifyVersion, porque elas já estavam feitas e eu não queria acabar causando algum conflito em algum outro lugar que estivesse usando elas.