Captura NSInvalidArgumentException de NSExpression

No meu código eu estou avaliando strings como expressões matemáticas por exemplo:

NSString *formula=@"9*7";
NSExpression *expr =[NSExpression expressionWithFormat:formula];
NSLog(@"%@", [[expr expressionValueWithObject:nil context:nil]intValue]);

O acima funciona bem, mas eu vou estar lidando com a entrada dinâmica dos usuários, então eu preciso ser capaz de capturar a exceção quando o usuário insere dados defeituosos, assim eu preciso ser capaz de capturar a exceção em situações como as seguintes:

NSString *formula=@"9*"; //note the deliberately invalid expression
NSExpression *expr =[NSExpression expressionWithFormat:formula];
@try {        
    [[expr expressionValueWithObject:nil context:nil]intValue];
}
@catch (NSException *exception) {
    NSLog(@"Exception");
}
@finally {
    NSLog(@"Finally");
}

No entanto, quando eu corro este código eu recebo:

Encerrando o aplicativo devido à exceção não detectada 'NSInvalidArgumentException', razão: 'Não é possível analisar a string de formato "9 * == 1"'

Existe alguma maneira de pegar essa exceção? Ou, alternativamente, existe alguma maneira de testar se uma expressão é válida antes de passá-la?

Obrigado!

questionAnswers(2)

yourAnswerToTheQuestion