springbootの簡単な紹介(4):グローバル例外処理(GlobalExceptionHandlerクラス)

いくつかの手順を経て、トランザクションの問題は解決されましたが、500エラーがインターフェイスに表示されますが、これは依然としてユーザーにとって不親切です。
通常、これらの例外は企業内で統一された方法でキャプチャされ、特別な例外処理クラスによって処理されます。

1.例外キャプチャ

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

インターフェイスは次を返します。
ここに写真の説明を挿入

2.404ページの処理

1)ブラウザで意図的に間違ったアドレスを入力します。

localhost:8080 / batchAddx?username = enjoy&passwd = 123の場合、バックエンドにはこのサービスがありません。関連する例外キャプチャは実行されていますが、ブラウザには引き続き表示されます。

ここに写真の説明を挿入

このとき、404を実行します(他の例外コードと同じ)。
このようなエラーページを構成する場合、以前はWEB.XMLで構成されていました。ここでは、構成にWebServerFactoryCustomizerのインスタンスが必要です。

2)前に作成したGlobalExceptionHandlerクラスに新しいメソッドを作成します

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

3)新しい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)サービスを再起動し、ブラウザに入力します。

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

:WebServerFactoryCustomizerの構成方法は、 SpringBoot2の後に構成されました。1.Xバージョンで使用する必要があるEmbeddedServletContainerCustomizer
コード次のとおりです。

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

最後の章:次の章のspringbootの簡単なエントリ(c)
springbootの簡単なエントリ(5-1):統合されたフロントエンドインターフェイス-Jsp

おすすめ

転載: blog.csdn.net/weixin_46822085/article/details/109271364