免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
Java例外カスタム印刷内容
背景:開発では、我々は独自の例外を使用することができるが、しかし、カスタム例外時に印刷ログ、印刷コンテンツより頻繁に。
1.プリントカスタム例外
あなたは、私たちは、カスタム例外を使用しているが、しかし投げられたとき、またはすべての情報スタックをプリントアウトすることを確認することができます。
2.ソースを表示
ソースコードを見ることによって、私たちは例外がスローされたとき、プログラムはこの例外起動する、ことを見ることができるfillInStackTrace
方法を、しかし、異常の大半は、処理方法を行っていません。基本的には、呼び出すことですsuper
方法を。
あなたが見ることができる、このメソッドの親クラスの実装はであるThrowable
クラス。しかし、この方法は、追加synchronized
情報スタックを表示するには、ロックを。これは間違いなくパフォーマンスに影響します。
基礎となる実装は、native
C言語を呼び出す方法。
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;
}