Quel est le problème avec ce code? Il n'atteint pas l'exception projetée par L'erreur est: p> C'est Android SQLite. La ligne est lorsque la méthode d'insertion est appelée. P> p> insertchild () code> méthode.
3 Réponses :
Vous n'atteignez que des exceptions de type sqliteeException code>. Si la méthode code> insertchild code> jette une autre exception, il ne sera pas attrapé.
try {
childDbOps.insertChild(child);
}
catch(SQLiteException exception) {
Log.i("error la inserare child", "on the next line");
exception.printStackTrace();
}
catch(AnotherException exception) {
//handle it
}
//Catch them all here
catch(Exception exception) {
//handle it: must handle it, don't just swallow it.
}
finally {
childDbOps.close();
}
J'ai aussi essayé avec une exception que je sais que c'est la superclasse de toutes les exceptions et ne fonctionne toujours pas
@bogdan êtes-vous sûr qu'il y a une exception - quelle est l'exception lancée? Est-il lancé par enfantddbops.open (); code>, qui est à l'extérieur, essayez de bloquer?
SQLITECONSTRESSException et est parce que je teste ce qui se passe avec ma demande lorsque je saisis à nouveau des données avec la même clé primaire et que je veux gérer cela. La méthode d'insertion est mon problème
Mais je ne sais pas pourquoi il n'est pas attrapé
SQLITECONTAINTException hérite de SQLITEException - il devrait être attrapé; Insérez un Catch (SQLITECONSTRESSEXCEPTION SQLEX) {} code> comme premier bloc de capture à confirmer.
Il ne fonctionne toujours pas que cela fait partie du journal d'exception et c'est la ligne 203 -> 08-06 07: 21: 16.148: erreur / base de données (320): android.database.sqlite.sqliteconstraintException: code d'erreur 19: La contrainte a échoué chez com.android.datalayer.dbadapter.insertchild : 2344)
Vérifiez que la réponse Stackoverflow.com/questions/3421577/try-catch- problème / ... est le bon, insérer () ne jette pas d'exceptions, insérez-vous ()
@bogdan est là un autre endroit que vous appelez insertchild (enfant); autre que cet endroit. Avez-vous mis une trace en essayant de savoir s'il s'agit de ce bloc et d'imprimer la trace comme ci-dessous? P>
essayer {log.i ("vient ici ");
enfantdbops.insertchild (enfant); } p> blockQuote>laissez-moi savoir. p>
Je mets le journal où il entre juste là. c'est le seul endroit où j'appelle la méthode
@bogdan merci pour la réponse. À partir de la trace, je peux voir que Android.View.View.PerformClick Methy gère l'exception (signifie qu'il a le bloc de capture), avant qu'il ne vienne sur votre capture
Bonjour, j'ai résolu mon problème mais sans utiliser l'essai attraper. Je fais une autre requête dans la base de données pour vérifier si cette clé primaire existe et c'est tout. Je n'ai pas été capable de le résoudre sous cette forme
La méthode SQLITEDATABASE.INSERT () est utilisée dans les cas où vous souhaitez gérer les écritures de la base de données sans dérouler la pile si une écriture échoue. Si vous souhaitez attraper des exceptions lors de l'insertion dans la base de données, utilisez le SQLITE.INSERTHOWROW () Méthode. Il lancera une exception que vous pouvez ensuite attraper et gérer. P>
C'est la réponse. Ce qui a été réellement signalé n'était pas le manque d'attraper une erreur lancée. L'erreur n'a pas été lancée. Il était cependant imprimé sur les bûches. Cependant, en utilisant InsérezRoWow (), l'exception sera lancée - puis il peut être attrapé. Cela est utile pour manger des problèmes connus, tels que l'exception de contrainte OPS.
Avez-vous essayé de simplement prendre une exception en utilisant Catch (Exception E) {}? Cela pourrait vous donner un indice.
Où l'exception indique-t-elle qu'il a été lancé? Assurez-vous que tout votre code est dans un bloc d'essai général générique et voyez ce qui se passe. Quelle API est-ce - Android SQLite?
Erreur / Base de données (320): android.database.sqlite.sqlitecRonstraintException: Code d'erreur 19: La contrainte a échoué à com.android.datalayer.dbadapter.insertchild (dbadapter.java:1 69) at com.android.activités.childinsertasttacit (Childinse Rtacitity.java:203) à Android.View.view.performclick (vue.java:2344) Oui, c'est Android SQLite. La ligne est lorsque la méthode d'insertion est appelée
Vous devriez marquer Stackoverflow.com/Questions/3421577/try-catch- Problème / ... comme réponse correcte :-)