Saludos!
Clase NuevoUsuario (servlet - es la clase que captura la excepción)
Código:
Clase Controlador (no pretendo que esta clase maneje la excepción, sólo que la envíe hacia arriba)protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String nombreUsuario = request.getParameter("nombreUsuario"), contraseña = request.getParameter("contraseña1") try{ controlador.nuevoJugador(nombreUsuario,contraseña); } catch(YaExisteUsuarioException e){ devolverPaginaErrorUsuario(response,nombreUsuario,e); } devolverPagina(response); }
Código:
Clase ConexiónMySQL (es la clase que dispara la excepción)public void nuevoJugador(String nombreUsuario, String contraseña) throws YaExisteUsuarioException{ conexionSql.iniciarConexion(); conexionSql.registrarJugador(nombreUsuario, contraseña); conexcionSql.terminarConexion(); jugadorActual = new Jugador(nombreUsuario, contraseña); }
Código:
public void registrarJugador(String nombreUsuario, String contraseña) throws YaExisteUsuarioException{ try{ ResultSet rs = st.executeQuery("SELECT nombre_usuario FROM jugadores WHERE nombre_usuario LIKE '"+nombreUsuario+"'"); int cont = 0; while(rs.next()) cont++; if(cont == 0){ st.executeUpdate("INSERT INTO jugadores (nombre_usuario,contraseña) VALUES ('"+nombreUsuario+"','"+contraseña+"')"); } else{ throw new YaExisteUsuarioException("El nombre de usuario ya está en uso"); } } catch(Exception e){ e.printStackTrace(); } }