gpt4 book ai didi

java - 如何遍历jsp中的异常原因链

转载 作者:行者123 更新时间:2023-11-29 08:08:08 25 4
gpt4 key购买 nike

我有一个 JSPX (X!) 页面,我想在其中显示异常(消息和堆栈跟踪),所有这些都会导致异常。打印第一个异常是没有问题的,但我还没有找到一种方法来“交互”所有原因异常。

我当然可以这样做:

<c:out value="${exception.message}" />
<c:out value="${exception.stacktrace}" />

<c:if test=${exception.cause not null}>
<c:set var="cause1" "${exception.cause}" />
<c:out value="${cause1.message}" />
<c:out value="${cause1.stacktrace}" />

<c:if test=${cause1.cause not null}>
<c:set var="cause2" "${cause1.cause}" />
<c:out value="${cause2.message}" />
<c:out value="${cause2.stacktrace}" />

<c:if test=${cause2.cause not null}>
<c:set var="cause3" "${cause2.cause}" />
<c:out value="${cause3.message}" />
<c:out value="${cause3.stacktrace}" />
</c:if>
</c:if>
</c:if>

但这很丑陋,如果有超过 3 个原因,将会失败。

所以我的问题是,如何在 jspx 中为这种情况构建一个 while 循环?

(请不要讨论打印异常是错误的。)

最佳答案

一种解决方法是使用遍历原因链的 foreachforeach 中的运行次数将限制可以显示的异常数量。
不是很优雅,但既没有 while 也没有 break 这可能是最“灵活”的方式......

<c:set var="current_exception" value="${exception}" />
<c:forEach begin="0" end="10" step="1" var="i">
<c:if test="${not empty current_exception}">
<c:out value="${current_exception.message}" />
<c:out value="${current_exception.stacktrace}" />
<c:set var="current_exception" value="${current_exception.cause}" />
</c:if>
</c:forEach>

关于java - 如何遍历jsp中的异常原因链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9700357/

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