O software apresenta erros. Mesmo os melhores aplicativos encontrarão erros em algum momento. Portanto, todo aplicativo deve ter alguns mecanismos de tratamento de erros implementados.
Spring Boot fornece uma página de erro Whitelabel padrão como um componente de sua configuração automática para tratamento de erros. No entanto, a expectativa é que os desenvolvedores criem uma página de erro personalizada que substitua a página de erro Whitelabel. Neste artigo, você aprenderá como personalizar a página de erro para seus aplicativos Spring Boot.
últimas postagens
Página de erro Whitelabel do Spring Boot
Quando um aplicativo Spring Boot encontra um erro, ele solicita o URL /error. Se não houver visualização neste local, será exibida a página de erro Whitelabel:
A página de erro Whitelabel indica a data e hora do erro, juntamente com o fuso horário correspondente. Além disso, indica o tipo de erro e seu código associado. A página Whitelabel afirma que este é um erro 404 (página não encontrada). Isso ocorre porque o aplicativo de amostra não possui mapeamento para a URL “/produtos”.
A maioria das informações apresentadas na página de erro Whitelabel são obtidas de atributos de erro específicos. A visualização de erros do Spring Boot tem acesso aos seguintes atributos de erro:
- erro: o motivo do erro.
- timestamp: a data e hora em que o erro ocorre.
- status: o código de status do erro.
- exceção: o nome da classe da exceção raiz (se o erro for resultado de uma exceção).
- mensagem: a mensagem de exceção (se o erro for resultado de uma exceção).
- erros: quaisquer resultados de uma exceção BindingResult (se o erro for resultado de uma exceção).
- trace: o rastreamento da pilha de exceções (se o erro for resultado de uma exceção).
- caminho: o caminho da URL onde ocorre o erro.
Criando uma página de erro com Thymeleaf
Seu aplicativo Spring Boot deve ter uma única página de erro armazenada em um modelo de “erro”. A extensão deste modelo irá variar dependendo da tecnologia de modelo que você decidir usar. Por exemplo, se você optar por um modelo Java Server Pages (JSP), o nome do arquivo deverá ser error.jsp.
No entanto, este exemplo de aplicativo Spring Boot usa o mecanismo de modelo Thymeleaf. Portanto, o nome do modelo é error.html. Você deve colocar consistentemente seu modelo de erro na pasta de modelos, no diretório de recursos com todos os outros arquivos de modelo.
O arquivo error.html
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title> Error</title>
<link rel="stylesheet" th:href="https://wilku.top/how-to-create-custom-spring-boot-error-pages-with-thymeleaf/@{/css/style.css}"/>
</head>
<body th:style="'background: url(/images/background1.jpg)
no-repeat center center fixed;'">
<div class="container" >
<h1>An error has occurred...</h1>
<img th:src="https://wilku.top/how-to-create-custom-spring-boot-error-pages-with-thymeleaf/@{/images/error-icon.png}"
width="100px" height="100px" />
<p>There seems to be a problem with the page you requested
(<span th:text="${path}"></span>).</p>
<p th:text="${'The status code is ' + status
+ ', which means that the page was ' + error + '.'}"></p>
<p th:text="${'Further details: ' + message + '.'}"></p>
<a class="btn" href="https://wilku.top/home">Back to home</a>
</div>
</body>
</html>
A página de erro personalizada realiza diversas tarefas importantes. Ele declara a ocorrência de um erro. Posteriormente, ele mostra a solicitação HTTP que acionou o erro. Além disso, fornece ao usuário o código de status associado ao erro. Mas se o usuário não estiver familiarizado com os códigos de status, a página também explica o significado do código por meio do atributo error.
A linha final do texto apresenta ao usuário uma mensagem em caso de exceção. Em seguida, o link no final permite ao usuário navegar de volta à página inicial. O arquivo error.html usa uma folha de estilo CSS e duas imagens para criar a seguinte visualização:
Mantenha sua página de erro amigável
O objetivo principal da página de erro é informar ao usuário que ocorreu um erro específico. No entanto, esta página de erro ainda é um aspecto do aplicativo. Portanto, garantir que a página de erro também seja amigável é crucial.
Isso significará optar por utilizar os atributos de erro que comunicam o erro de uma forma mais descomplicada. Portanto, você pode optar por usar o atributo path em vez do atributo trace, que é muito mais complexo e contém detalhes que o usuário não precisa saber.
Você também não deseja fornecer a um usuário aleatório informações excessivas sobre o funcionamento interno do seu aplicativo, pois isso pode comprometer a segurança do aplicativo.