gpt4 book ai didi

JAVA lo4j 正确的异常处理和日志记录

转载 作者:行者123 更新时间:2023-12-01 13:37:10 25 4
gpt4 key购买 nike

由于某种原因,我丢失了部分堆栈跟踪,即异常的实际根源。

public void method1(){

try{
method2();
}
catch(SearchException e){
logger.error("Search error", e.getMessage(), e);
}
}

private void method2(){
try{
//Logic which potentially can throw exception
....
....
}
catch(Exception e){
throw new SearchException("Error during execution Module A", e);
}
}


public class SearchException extends Exception{


public SearchException(String message, Throwable cause) {
super(message, cause);
}
}

有人知道为什么我缺少发生第一个异常的堆栈跟踪部分的原因吗?您能建议一种处理/记录异常的正确方法吗?

最佳答案

super(message, cause);

message 将是 Throwable 类的 detailMessage。它将在 toString 方法中使用,并且源原因(异常)将被忽略。

358    public String toString() {
359 String s = getClass().getName();// class Name
360 String message = getLocalizedMessage();// detailMessage
361 return (message != null) ? (s + ": " + message) : s;
362 }

您可以重写自定义Exception 类中的toString 方法。

class SearchException extends Exception{
String str=null;
public SearchException(String str,Throwable th){

super( th);
this.str=str;
}
public String toString(){
return super.toString() +" - "+ str;
}
}

此定制表格将打印 -

Search error -----java.lang.NullPointerException-------SearchException: java.lang.NullPointerException - Error during execution Module A

关于JAVA lo4j 正确的异常处理和日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com