Java ServletException

Bom dia!

Estou aprendendo Java web, e estou tendo problemas com o uso do ServletException no throws, o eclispe mostra o seguinte erro:

Description Resource Path Location Type
Syntax error on token “throws”, byte expected AdicionaContatoServlet.java /fj21-agenda/src/br/com/caelum/servlet line 28 Java Problem
Syntax error, insert “;” to complete BlockStatements AdicionaContatoServlet.java /fj21-agenda/src/br/com/caelum/servlet line 28 Java Problem

Abaixo a classe completa. Poderiam me ajudar?

package br.com.caelum.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

import br.com.caelum.jdbc.dao.ContatoDao;
import br.com.caelum.jdbc.modelo.Contato;

/**
 * Servlet implementation class AdicionaContatoServlet
 */
@WebServlet("/adicionaContato")
public class AdicionaContatoServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request, HttpServletResponse response) {
		throws ServletException, IOException
		{
			PrintWriter out = response.getWriter();
			
			String nome = request.getParameter("nome");
			String endereco = request.getParameter("endereco");
			String email = request.getParameter("email");
			String dataEmTexto = request.getParameter("dataNascimento");
			Calendar dataNascimento =null;
			
			try {
				Date date = new SimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);
				dataNascimento = Calendar.getInstance();
				dataNascimento.setTime(date);
			} catch (ParseException e) {
				out.println("Erro na conversão da data");
				return;
			}
			
			Contato contato = new Contato();
			contato.setNome(nome);
			contato.setEndereco(endereco);
			contato.setEmail(email);
			contato.setDataNascimento(dataNascimento);
			
			ContatoDao dao = new ContatoDao();
			dao.adiciona(contato);
			
			out.println("<html>");
			out.println("<body>");
			out.println("Contato " + contato.getNome() +
			" adicionado com sucesso");
			out.println("</body>");
			out.println("</html>");
		}
		
	}

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public AdicionaContatoServlet() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

Obrigado!

Qual é a linha 28, padawan?

Na linha 28 tem o throws:

		throws ServletException, IOException

Você não pode colocar um abre chaves e depois inserir as exceções. Deveria ser assim:

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

Muito obrigado. Resolvido.