반응형

JSTL, try catch 처리를 위한 catch 태그 예제 

글. 수알치 오상문 

 

JSTL은 자바 try catch 문법을 대체하는 catch 태그(<c:catch>)를 제공한다. <c:catch>는 페이지에서 발생하는 에러를 처리한다. <c:catch>에서 발생한 특정 에러는 pageScope 데이터로 저장되며 페이지를 벗어나면 삭제된다. 

 

다음처럼 <c:catch>태그에 에러를 담을 변수를 선언하고 내부에 코드를 작성한다.

 

    <c:catch var="myException">
    <%
        int i = (int)Math.random(2);  // 0~1        
        if (i == 0)

            throw new Exception();

    %>
    </c:catch>

 

 

에러 발생 여부에 따라서 분기 처리하는 부분은 다음처럼 작성할 수 있다. 


    <c:choose>
      <c:when test="${!empty myException}">
        Error!!!
      </c:when>
      <c:otherwise>
        OK!!!
      </c:otherwise>
    </c:choose>

 

 

또는 다음처럼 에러가 발생한 경우에 처리하는 것도 가능하다.

 

   (divide by zero 에러 발생 예제)

 

    <c:catch var="myExcept">   

        <% int result = 100 / 0; %>

        결과 : <%=result %>

    </c:catch>

    

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

        에러 발생 : ${myExcept.message }

    </c:if>

 

 

[예제] JSTL catch

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>JSTL catch</title>
</head>
<body>
    <c:catch var="myExcept">   
        <% int result = 100 / 0; %>
        계산 결과 : <%=result %>
    </c:catch>  
    <c:if test="${myExcept != null }" > 
        에러 발생 : ${myExcept.message }
    </c:if>
</body>   
</html>

 

반응형

+ Recent posts