Oi Fernando,
Na verdade não deu exception pois o método não deve ter sido chamado.
No vídeo o instrutor alterou o código do Resource para que o id seja passado com parte da url, ao inves de ser um parametro da url.
Se você deixar o código assim:
@GET
@Produces(MediaType.APPLICATION_XML)
public Carrinho busca(@QueryParam("id") long id) {
Carrinho carrinho = new CarrinhoDAO().busca(id);
return carrinho;
}
Sem o @Path("{id}")
em cima do método, e utilizando o @QueryParam("id")
, somente conseguirá chamar o resource no browser chamanda a url dessa forma: http://localhost:8080/carrinhos?id=1
Mas após a alteração, o código fica assim:
@Path("{id}")
@GET
@Produces(MediaType.APPLICATION_XML)
public Carrinho busca(@PathParam("id") long id) {
Carrinho carrinho = new CarrinhoDAO().busca(id);
return carrinho;
}
E então o parametro id deve ser passado assim no browser: http://localhost:8080/carrinhos/1
Mas mesmo assim, se você chamar a url passando um id que não existe: http://localhost:8080/carrinhos/13
Não vai dar exception, pois a lógica do Resource apenas chama a DAO para buscar por id, e depois devolve o carrinho. Nesse caso será devolvido null para o browser.
Daria exception se você tentasse acessar alguma informação do carrinho. Por exemplo:
@Path("{id}")
@GET
@Produces(MediaType.APPLICATION_XML)
public Carrinho busca(@PathParam("id") long id) {
Carrinho carrinho = new CarrinhoDAO().busca(id);
System.out.println(carrinho.getId());
return carrinho;
}