在 JSTL 中捕获除以零
Catch division by zero in JSTL
我正在尝试使用 catch 块通过以下 jstl 循环捕获被零除,但我从来没有 'Not applicable' 但它抛出 '?%'。我得到 'grade' 正确显示。如何显示 'Not applicable' 而不是 '%?'?
<td style="text-align: center;">
<c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
<c:catch>
<fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
<c:set var="passed" value="${myInteger - grade eq 0}"/>
</c:catch>
<c:if test="${passed}">
<fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
value="${grade}" />%
</c:if>
<c:if test="${not passed}">
Not applicable
</c:if>
</td>
</tr>
</c:forEach>
您抛出算术异常的语句不在 JSTL 的 catch 块内(i.e.Use 如下逻辑):-
<c:catch var="errorOccurred">
<c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
</c:catch>
<c:choose>
<c:when test="${errorOccurred != null}">
Not applicable
</c:when>
<c:otherwise>
<fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
<c:set var="passed" value="${myInteger - grade eq 0}"/>
<c:choose>
<c:when test="${passed}">
<fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
value="${grade}" />%
</c:when>
<c:otherwise>
Not applicable
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>
我正在尝试使用 catch 块通过以下 jstl 循环捕获被零除,但我从来没有 'Not applicable' 但它抛出 '?%'。我得到 'grade' 正确显示。如何显示 'Not applicable' 而不是 '%?'?
<td style="text-align: center;">
<c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
<c:catch>
<fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
<c:set var="passed" value="${myInteger - grade eq 0}"/>
</c:catch>
<c:if test="${passed}">
<fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
value="${grade}" />%
</c:if>
<c:if test="${not passed}">
Not applicable
</c:if>
</td>
</tr>
</c:forEach>
您抛出算术异常的语句不在 JSTL 的 catch 块内(i.e.Use 如下逻辑):-
<c:catch var="errorOccurred">
<c:set var="grade" value="${(G / (G + L + W + D + A + pc + dc + vc) * 100)}"/>
</c:catch>
<c:choose>
<c:when test="${errorOccurred != null}">
Not applicable
</c:when>
<c:otherwise>
<fmt:formatNumber value="${grade}" pattern="0" var="myInteger"/>
<c:set var="passed" value="${myInteger - grade eq 0}"/>
<c:choose>
<c:when test="${passed}">
<fmt:formatNumber minFractionDigits="2" maxFractionDigits="2"
value="${grade}" />%
</c:when>
<c:otherwise>
Not applicable
</c:otherwise>
</c:choose>
</c:otherwise>
</c:choose>