Вопрос более низкого уровня, почему вы это делаете?
Метод try / catch / finally широко используется в Java, но почти никогда не используется в Objective-C, и он не является предпочтительным подходом - он вам просто не нужен, поскольку библиотеки не будут генерировать исключения, как вызовы библиотек Java, и если вы пишете свои собственные библиотеки, вы не должны ожидать, что вызывающие абоненты, естественно, подумают, что нужно искать исключения для перехвата.
Наиболее широко используемым и понятным соглашением является соглашение о делегате, у которого есть обратный вызов метода ошибки или, возможно, уведомления о более общих ошибках, которые необходимо пропустить через несколько уровней кода. Этот подход мог бы более широко использоваться в мире Java, если бы существовала простая система уведомлений, как это было в Cocoa.
У делегированного подхода есть то же свойство документирования, что и при объявлении исключения в Java, это просто разные подходы, но обычно лучше использовать подход, более подходящий для данного языка, если только нет веской причины поступать иначе.