Why do we catch the exception if we throw in a different line afterwards? As we have RaiseError option set, we can catch the error  and rethrow using Internal class. What do you think?