使用 jstl 捕获 jsp 中的错误

Catch errors in jsp using jstl

我有这段代码可以注册文本的值 num 并检查它是偶数还是奇数,并且它适用于此,当我写一个非数字值然后出现 500 错误时出现问题我猜这是一个 NumberFormatException

<form action="Main" method="post">
    <label>Num: </label><input type="text" name="num" size=2/>
    <input type="submit" value="OK"/>
</form>

<c:if test="${num!=null }">
    <c:choose>
        <c:when test="${num%2==0 }">
            <p>${num } is even</p>
        </c:when>
        <c:otherwise>
            <p>${num } is odd</p>
        </c:otherwise>
    </c:choose>
</c:if>

有什么方法可以捕捉到它吗?

为此,您可以使用 <c:catch>

<c:set var="num" value="Some string"/>

<c:catch var ="e">
    <c:if test="${num!=null }">
        <c:choose>
            <c:when test="${num%2==0 }">
                <p>${num } is even</p>
            </c:when>
            <c:otherwise>
                <p>${num } is odd</p>
            </c:otherwise>
        </c:choose>
    </c:if>
</c:catch>

<c:if test = "${e != null}"> ${e} </c:if>

您将获得:

java.lang.NumberFormatException: For input string: "Some string"