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!