SpringBoot例外処理とカスタム例外を記録する

グローバルな例外処理

package com.van.mall.common;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * @author Van
 * @date 2020/3/24 - 10:49
 */
@Slf4j
@ControllerAdvice
public class ExceptionHandler {
    @org.springframework.web.bind.annotation.ExceptionHandler(value = Exception.class)
    @ResponseBody
    public ServerResponse handler(Exception e){
      log.error("system error",e);
        return    ServerResponse.error("zero can divide");
    }
}

説明:

@ControllerAdviceは、それがグローバル例外クラスであることを識別するために使用されます。
@ ExceptionHandlerは、キャッチする例外クラスを識別します。ここで例外が使用され、例外である限り、すべてがキャッチされます(すべての例外がExceptionから継承されるため)
@ResponseBody ID、I返すのはビューではなくjsonです。
このメソッドでは、このメソッドで例外が渡されるため、メソッドにException eパラメータを追加する必要があります。

カスタム例外

package com.van.mall.common;

import lombok.Data;

/**
 * @author Van
 * @date 2020/3/24 - 10:55
 */
@Data
public class ZeroException extends RuntimeException {
    private String message;
    private int code;

    public ZeroException(String message, int code) {
        super(message);
        this.code = code;
    }
}

説明:

カスタム例外は、RuntimeExceptionを直接継承します。メッセージとコードの2つのメンバーが必要であり、設定する必要があります。また、コンストラクター(コンストラクタースーパーが直接親クラスのコンストラクターを呼び出してメッセージに値を割り当てる)
を使用する場合直接スロー新しいZeroException(「0は除数として使用できません」、-1)

56件のオリジナル記事を公開 Like1 Visits1509

おすすめ

転載: blog.csdn.net/weixin_44841849/article/details/105067070