Introdução simples ao springboot (quatro): tratamento de exceção global (classe GlobalExceptionHandler)

Em alguns passos, embora o problema da transação tenha sido resolvido, o erro 500 aparece na interface, que ainda não é amigável para os usuários.
Geralmente, essas exceções são capturadas uniformemente na empresa e tratadas por uma classe especial de tratamento de exceções.

1. Captura de exceção

GlobalExceptionHandler 类

package cn.enjoy.utils;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
/**
 * 异常处理类
 */
@ControllerAdvice
public class GlobalExceptionHandler {
    
    
    @ExceptionHandler(value = RuntimeException.class)
    @ResponseBody
    public Object defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
    
    
        e.printStackTrace();
        return "我是个异常处理类";
    }
}
重启服务后,在浏览器上输入会出现异常的服务
localhost:8080/batchAdd?username=enjoy&passwd=123

A interface retorna:
Insira a descrição da imagem aqui

2. processamento de página 404

1) Digitando deliberadamente o endereço errado no navegador:

localhost: 8080 / batchAddx? username = enjoy & passwd = 123, o back-end não tem este serviço. Embora a captura de exceção relevante tenha sido feita, o navegador ainda a exibe.

Insira a descrição da imagem aqui

Neste momento, faça 404 (o mesmo com outros códigos de exceção):
Ao configurar tal página de erro, ela costumava ser configurada em WEB.XML, e aqui, uma instância de WebServerFactoryCustomizer é necessária para configuração.

2) Crie um novo método na classe GlobalExceptionHandler criada anteriormente

@Bean
    public WebServerFactoryCustomizer<ConfigurableWebServerFactory> webServerFactoryCustomizer(){
    
    
        return (factory->{
    
    
            ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
            factory.addErrorPages( error404Page);
        });
    }

3) Crie uma nova classe BaseController

package cn.enjoy.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class BaseController {
    
    

    @RequestMapping("/404.do")
    public Object error_404() {
    
    
        return "你要找的页面,被lison偷吃了!";
    }
}

4) Reinicie o serviço e entre no navegador:

localhost:8080/batchAddx?username=enjoy&passwd=123
此时,页面返回“你要找的页面,被lison偷吃了!”

Nota : O método de configuração de WebServerFactoryCustomizer foi configurado após SpringBoot2. O códigode EmbeddedServletContainerCustomizer que precisa ser usadonaversão 1.X é
o seguinte:

 @Bean
   public EmbeddedServletContainerCustomizer containerCustomizer() {
    
    
       return (container -> {
    
    
           ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");
           container.addErrorPages( error404Page);
        });
   }

O último capítulo: entrada simples springboot (c) do
próximo capítulo: entrada simples springboot (5-1): interface front-end integrada -Jsp

Acho que você gosta

Origin blog.csdn.net/weixin_46822085/article/details/109271364
Recomendado
Clasificación