SQLiteConstraintException no detectado
¿Cuál es el problema con este código? No captura la excepción lanzada por el método insertChild()
.
childDbOps.open(); try { childDbOps.insertChild(child); } catch (SQLiteException exception) { Log.i("error la inserare child", "on the next line"); exception.printStackTrace(); } finally { childDbOps.close(); }
El error es:
- Android: ¿Cómo capturar la Excepción fatal lanzada desde una biblioteca de referencia?
- Android SQLite Contraint Conflicto. El intento / captura no pudo atrapar
- No se puede capturar Java (Android) Excepción con try-catch
- ¿Es una práctica aceptable en Java anidar las sentencias try / catch?
- Android, ¿cómo mostrar un diálogo de error de un try catch?
ERROR/Database(320): android.database.sqlite.SQLiteConstraintException: error code 19: constraint failed at com.android.dataLayer.DbAdapter.insertChild(DbAdapter.java:169) at com.android.activities.ChildInsertActivity.onClick(ChildInsertActivity.java:203) at android.view.View.performClick(View.java:2344)
Es androide sqlite. La línea es cuando se llama al método insert.
- Android no es compatible con Java v7 +, así que ¿debo usar múltiples capturas o una captura con cheques de instanceof?
- Capture todas las posibles excepciones de Android en todo el mundo y recargue la aplicación
- 'Catching' OutOfMemoryError soluciona completamente el problema de falta de memoria?
- Nivel de la API de Android <19 y "prueba puede utilizar la administración de recursos automática" warning
- Utilizar try / catch para evitar que la aplicación se bloquee
El método SQLiteDatabase.insert () se utiliza en los casos en que desea manejar escrituras de base de datos sin desenrollar la pila si falla una escritura. Si desea capturar excepciones al insertar en la base de datos, utilice el método [SQLite.insertOrThrow (] [1]). Lanzará una excepción que usted puede entonces coger y manejar.
[1]: http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html#insertOrThrow(java.lang.String , java.lang.String, android.content.ContentValues)
Estás captando sólo excepciones del tipo SQLiteException
. Si el método insertChild
arroja cualquier otra excepción, no se insertChild
.
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(); }
@bogdan está allí cualquier otro lugar u está llamando insertChild (niño); Aparte de este lugar. Has puesto un rastro en bloque try para saber si se trata de este bloque e imprimir el rastro como a continuación.
Intente {Log.i ("viene aquí");
ChildDbOps.insertChild (hijo); }
Házmelo saber.