try and catch ne gère pas l'exception dans l'iphone
-
28-10-2019 - |
Question
J'utilise le code suivant pour détecter une erreur lorsque ind.row n'est pas une valeur valide ou parfois il devient nul
@try {
if(ind.row<[[treeNode flattenElements] count])
{
[self.mTableView scrollToRowAtIndexPath:ind atScrollPosition:UITableViewScrollPositionTop animated:YES];
}
}
@catch (NSException *e) {
NSLog(@"%@",e);
}
mais lorsque ce code s'exécute parfois cette erreur se produit
Assertion failure in -[NSIndexPath row], /SourceCache/UIKit_Sim/UIKit-1262.60.3/UITableViewSupport.m:1948`
quelle peut être la raison de cette erreur et pourquoi l'exception n'est pas gérée
La solution 3
en fait, il attrapait déjà les exceptions ... j'avais mis le drapeau stop sur les exceptions objc. quand j'ai supprimé qu'il attrapait les exceptions .... comme l'a souligné @stilesCrisis la valeur ind était nulle au moment decette exception..désolé pour le trble
Autres conseils
Les assertions dans iOS ne lèvent pas d'exceptions, vous ne pouvez donc pas les attraper.
Vous allez devoir découvrir ce qui ne va pas avec votre appel à -row
.Ma première hypothèse serait que "ind" est déjà libéré ou quelque chose comme ça.
Vous devrez vérifier l'index, générer et lever une exception vous-même: Référence de classe NSException
+ (void)raise:(NSString *)name format:(NSString *)format, ...