Java例外カスタム印刷内容

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/LitongZero/article/details/102767740

Java例外カスタム印刷内容

背景:開発では、我々は独自の例外を使用することができるが、しかし、カスタム例外時に印刷ログ、印刷コンテンツより頻繁に。

1.プリントカスタム例外

ここに画像を挿入説明

あなたは、私たちは、カスタム例外を使用しているが、しかし投げられたとき、またはすべての情報スタックをプリントアウトすることを確認することができます。

2.ソースを表示

ソースコードを見ることによって、私たちは例外がスローされたとき、プログラムはこの例外起動する、ことを見ることができるfillInStackTrace方法を、しかし、異常の大半は、処理方法を行っていません。基本的には、呼び出すことですsuper方法を。

ここに画像を挿入説明

あなたが見ることができる、このメソッドの親クラスの実装はであるThrowableクラス。しかし、この方法は、追加synchronized情報スタックを表示するには、ロックを。これは間違いなくパフォーマンスに影響します。

基礎となる実装は、nativeC言語を呼び出す方法。

3.ソリューション

①。カスタム例外を書きます

// 此处为lombok注解
@Getter
@AllArgsConstructor
public enum ExceptionEnum {
    AUTH(1, "认证异常")
    ;
    private Integer code;
    private String msg;
}


public class AppException extends RuntimeException {
    public AppException(ExceptionEnum exceptionEnum) {
        super(exceptionEnum.getMsg());
    }
    
    // 关键
    @Override
    public Throwable fillInStackTrace() {
        return this;
    }

    public static void main(String[] args) {
        throw new AppException(ExceptionEnum.AUTH);
    }
}

②。リライトfillInStackTraceする方法を

オーバーライドした後、この方法は、それだけで最初のメッセージを出力しますので、見やすいスペースを記録保存することができますが、また、一部のパフォーマンスを向上させることができないだけ。

    @Override
    public Throwable fillInStackTrace() {
        return this;
    }

③。印刷

それは少数の印刷明瞭に見ることができます

ここに画像を挿入説明

おすすめ

転載: blog.csdn.net/LitongZero/article/details/102767740