SQLException

Fermé
shadow - 9 févr. 2013 à 18:53
 shadow - 10 févr. 2013 à 18:42
Salut à tous!

Je développe un site web avec JavaEE.
Je crée une Servlet qui me permet de créer un utilisateur et j'ai un petit soucis avec les exceptions.

voici le code de ma méthode:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
		try{
			JSONObject user = Users.addUser(request.getParameter("nom"), request.getParameter("prenom"), request.getParameter("password"));
		}catch(SQLException sqle){
			while(sqle != null){
				String message = sqle.getMessage();
				String sqlState = sqle.getSQLState();
				int errorCode = sqle.getErrorCode();
				System.out.println("Message = "+message);
				System.out.println("SQLState = "+sqlState);
				System.out.println("ErrorCode = "+errorCode);
				sqle.printStackTrace();
				sqle = sqle.getNextException();
			}
		}
	}


Au niveau de la ligne
catch(SQLException sqle)
le compilateur affiche une erreur "remove catch clause".
Comment pourrais-je le forcer à prendre le try/catch?

Merci

3 réponses

KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
9 févr. 2013 à 19:46
Pourquoi tu veux le forcer à prendre une exception qui ne peut pas être levée ?

Jamais tu ne pourras avoir de SQLException à ce niveau du code, donc ton try/catch ne sert à rien !
0
Oui, mais les méthodes de l'API JDBC lèvent souvent des SQLException, c'est pour ça que je veux forcer le try/catch.
0
KX Messages postés 16741 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 30 mai 2024 3 016
10 févr. 2013 à 17:34
"l'API JDBC lèvent souvent des SQLException"

Oui mais pas toujours.
Si le compilateur t'indique une erreur "remove catch clause" ici c'est parce qu'il est sûr que tu ne rencontreras jamais de SQLException à ce niveau là du code (c'est à dire que ni Users.addUser, ni request.getParameter ne lève de SQLException).

Alors si tu veux absolument forcer le try/catch on peut le faire, mais c'est absurde.

try
{
    int n = 1+2;
    System.out.println(n);
}
catch (Exception e)
{
    if (e instanceof SQLException)
    {
        System.err.println("SQLException");
    }
    else throw e;
}
0
Ok! Je te remercie pour ta réponse.
0