Por que exceção não é capturada?

Pessoal, por favor, será que alguém sabe me dizer porque o erro da query não é capturado pelo catch?, simplesmente executa normalmente, mas nada é gravado no banco de dados quando há um erro.

public void incluir(Produtos produtos) {
	
	try{
		String sql = "insert into " +
		"[color=blue]produtos,[/color] " +  [b]<-- coloquei essa vírgula de propósito, mas o esse erro não é tratado, não deveria ir para o catch(SQLException e)? [/b]			"

(codigo, " +
"descricao, " +
"preco, " +
"status) " +
"values(?,?,?,?)";
PreparedStatement stmt = this.connection.prepareStatement(sql);
stmt.setInt(1, produtos.getCodigo());
stmt.setString(2, produtos.getDescricao());
stmt.setDouble(3, produtos.getPreco());
stmt.setString(4, produtos.getStatus());
stmt.execute();
stmt.close();
}catch(SQLException e){ [color=red]<-- não entra aqui.[/color]
}
}

Resumindo, se há um erro na query não deveria entrar no catch? Por favor, me digam o que está de errado e como devo consertar. Obrigado.

Como você sabe que não entra no catch? afinal não há nada dentro dele, provavelmente entra no catch, mas como não tem nada lá, simplesmente sai e passa pra linha seguinte.

Coloca assim:

}catch(SQLException e){ e.printStackTrace(); }

jairelton, é isso mesmo, por não haver nada no bloco catch a execução continua, colocando a linha e.printStackTrace() o erro aparece no console e colocando um throw a execução pára.
Até aí blz, mas como fazer pra na tela, no browser, eu dê um aviso ao usuário que ocorreu um erro de sql mas que continue na tela dando a opção de tentar de novo ou simplesmente fechar ou clicar em um link que por acaso a tela tenha?
Resumindo, ao invés de aparecer a tela: HTTP Status 500 - com o erro que ocorreu, eu quero apresentar uma mensagem dizendo algo como: “Duplicidade de chave” ou “Erro de SQL”.
Obrigado.

Você pode fazer isso dentro do Web.xml

&lt;error-page&gt;&lt;error-code&gt;500&lt;/error-code&gt;&lt;location&gt;caminho da pagina de erro&lt;/location&gt;&lt;/error-page&gt;

Exatamente o que o Bruno falou, pra saber como fazer uma pagina de erro, consulte os links abaixo:

http://java.sun.com/developer/EJTechTips/2003/tt0114.html
http://www.stardeveloper.com/articles/display.html?article=2001072401&page=1

Se estiver usando algum framework, como struts, pode ser que ele dê mais alguma opção de exibição de mensagens de outras formas.

Valeu pessoal, vou olhar essa sugestão de voces, com relação a Struts, eu ainda não estou usando, estou estudando um curso online e ainda não cheguei nessa parte, estou seguindo passo-a-passo pra entender bem toda estrutura.
Obrigado a todos.