gpt4 book ai didi

java - log4j:一次记录多个异常?

转载 作者:行者123 更新时间:2023-11-30 06:58:30 26 4
gpt4 key购买 nike

我有一些代码如下:

List<Exception> exceptions = new ArrayList<Exception>();
for (Foo foo : foos) {
try {
doStuff(foo);
} catch (FooException ex) {
exceptions.add(ex);
}
}
if (!exceptions.isEmpty())
logger.error("Exceptions occurred processing foos", exceptions);

在我的日志中,我会看到每个异常的完整详细信息,包括堆栈跟踪、原因链等。当然,这段代码实际上不起作用。有没有办法让一个日志条目包含所有这些?

至于为什么不在每个异常被捕获时记录下来,原因是我正在使用 SMTPAppender 并且宁愿只收到一封关于此的电子邮件。

最佳答案

这是简单干净的方法:

1。创建您自己的异常,例如:

class CompositeException extends Exception {
private final List<Exception> es;

public CompositeException(Exception[] es) {
this.es = Arrays.asList(es);
}

public CompositeException(List<Exception> es) {
this.es = new ArrayList<Exception>(es);
}

@Override
public void printStackTrace(PrintStream s) {
for (Throwable e : this.es) {
e.printStackTrace(s);
}
}
}

2。然后使用 CompositeException 类:

List<Exception> exceptions = new ArrayList<Exception>();
for (Foo foo : foos) {
try {
doStuff(foo);
} catch (FooException ex) {
exceptions.add(ex);
}
}

关于java - log4j:一次记录多个异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32592362/

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