Android Jeter L'Exception
Dans mon application, j'utilise SQLiteOpenHelper
classe et il a insertOrThrow
méthode. Je veux savoir qui cette méthode proche de ma connexion avant de lancer une exception? Et il est écrit sur la définition de la méthode de "l'ID de ligne de la ligne nouvellement insérée, ou -1 si une erreur s'est produite"
Quand lancer une exception comment il a une valeur de retour? Quelque chose est faux. Explication ou jeter ?
C'est la façon dont j'utilise InsertOrThrow
.
Je veux savoir quand je déclare throws Exception
ma méthode, est-il nécessaire d'utiliser try-catch
(Si je n'ai pas quelque chose de spécial à faire à rattraper comme mon exp.)?
public long insert(ContentValues cv) throws Exception {
try
{
long rowId = getWritableDatabase().insertOrThrow(_tableName, null, cv);
return rowId;
}
catch (Exception ex) {
throw ex;
}
finally{
Close();
}
}
- Publier vos pratiques de choses que vous avez essayé.
Vous devez vous connecter pour publier un commentaire.
Il dépend; si
this.Close()
peut lancer une exception, elle doit être déclarée comme étant levée, ou pris. Souvent cela est enveloppé dans un petit utilitaire méthode.Ce n'est pas obligatoire d'utiliser un
catch
, vous pouvez simplementtry
/finally
.Concernant les valeurs de retour: méthodes de sortie en raison d'une exception n'ont pas de valeur de retour.
Exceptions doivent encapsuler suffisamment d'informations pour:
Je voudrais vous encourager à respecter les conventions de nommage Java pour éviter de confondre les lecteurs de votre code: non-finale de variables doivent commencer par une lettre minuscule. Les noms de méthode doit également commencer par une minuscule.
Aussi, vous n'avez pas besoin de préface méthodes (ou variables) avec
this
quand il n'est pas nécessaire de lever l'ambiguïté de la propriété que vous souhaitez accéder.Oui, vous avez raison. La documentation semble erroné.
insertOrThrow
ne retourne pas-1
, au lieu de cela, il va jeterSQLException
si la requête a échoué. Il y a une autre méthode appeléeinsert
qui permettrait le retour-1
si la requête a échoué, et nouvellement créésrowID
si le succès.