소프트웨어 프로그램은 잘 설계되고 철저한 테스트를 거쳤음에도 불구하고 본질적으로 이상이나 오작동이 발생하기 쉽습니다. 따라서 모든 애플리케이션에 강력한 오류 관리 프로토콜을 표준 기능으로 통합하는 것이 필수적입니다.

Spring Boot는 오류 관리를 위한 자동 구성의 일부로 고유한 화이트 라벨 오류 페이지를 제공합니다. 그러나 개발자는 표준 화이트 라벨 버전을 대체하기 위해 자체적으로 개인화된 오류 페이지를 설계하고 구현할 것으로 예상됩니다. 이 자습서에서는 특정 Spring Boot 애플리케이션에 맞게 오류 페이지를 조정하는 프로세스를 안내합니다.

Spring Boot €™의 화이트 라벨 오류 페이지

Spring Boot 애플리케이션 내에서 문제가 발생하면 시스템이 자동으로 “/error” 엔드포인트로 리디렉션됩니다. 그러나 오류를 표시하도록 지정된 위치에 미리 정의된 보기가 없는 경우 화이트라벨 오류 페이지가 대신 표시됩니다.

화이트 라벨 오류 페이지에는 해당 시간대와 함께 현재 날짜와 시간이 표시됩니다. 또한 특정 오류 범주와 관련 식별자를 식별합니다. 이 경우 표시된 정보에 따르면 현재 문제가 404 오류이며, 이는 요청된 리소스를 찾을 수 없음을 의미합니다. 특히 이 오류는 샘플 애플리케이션 내에 “/products†유니폼 리소스 로케이터를 처리하기 위한 사전 정의된 구성이 없기 때문에 발생합니다.

화이트 라벨 오류 페이지에 표시되는 콘텐츠는 주로 Spring Boot의 오류 처리 프레임워크 내에서 사용할 수 있는 특정 오류 속성에서 비롯됩니다. 이 플랫폼에서 제공하는 오류 보기에는 다음을 포함하되 이에 국한되지 않는 포괄적인 범위의 오류 속성이 포함됩니다:

앞서 언급한 문제는 발생한 오류와 관련이 있으며, 근본 원인을 파악하기 위해 추가 조사가 필요합니다.

타임스탬프는 오류가 발생한 특정 시점을 나타내며, 오류 발생 날짜와 시간을 모두 나타냅니다.

오류 상태 코드는 시스템 또는 애플리케이션 내에서 작업, 작업 또는 프로세스의 완료 또는 성공/실패 상태를 나타내는 정량적 값을 나타냅니다. 실행 중에 발생한 오류에 대한 정보를 전달하는 표준화된 메커니즘 역할을 하며 문제를 식별하고 해결하는 데 도움이 되는 유용한 진단 데이터를 제공합니다. 오류 상태 코드의 구체적인 의미와 해석은 사용되는 상황에 따라 달라질 수 있으므로 그에 따라 문서화해야 합니다.

이 글도 확인해 보세요:  내부에서 REST API 호출을 수행하는 방법 VS 코드

“예외”라는 용어는 예외가 발생하여 오류가 발생하는 경우 기본 또는 최초 예외의 클래스 이름에 부여된 명칭을 의미합니다.

오류 메시지는 예외의 결과로 발생하는 경우 실행 중에 발생한 특정 문제에 관한 정보를 제공하며 애플리케이션 또는 시스템의 문제를 진단하고 해결하는 데 사용할 수 있습니다.

BindingResult 예외는 유효성 검사 또는 변환 실패와 같이 데이터를 모델 속성에 바인딩하는 데 문제가 있는 경우 트리거됩니다. 이러한 예외에는 이 프로세스 중에 발생한 모든 오류에 대한 정보가 포함되어 있으며 BindingResult 객체를 통해 액세스할 수 있습니다.

예외 스택 추적은 예외 유형 및 예외가 발생한 코드의 위치에 대한 관련 정보를 포함하여 예외가 발생할 때 발생하는 이벤트 시퀀스를 나타냅니다. 이는 예외로 인한 오류를 식별하고 디버깅하는 데 유용할 수 있습니다.

URL 경로는 오류 발생으로 이어지는 웹사이트 서버 내의 특정 경로 또는 위치에 대한 참조입니다.

Thymeleaf로 오류 페이지 만들기

Spring Boot 애플리케이션에 오류를 처리하는 일관된 방법을 갖추려면 지정된 àŝ€•‚€œ템플릿 내에 위치한 단독 오류 페이지를 유지하는 것이 좋습니다. 이 템플릿의 구체적인 파일 이름과 형식은 선택한 특정 템플릿 기술에 따라 다를 수 있습니다. 예를 들어 JSP(Java Server Pages)를 기본 옵션으로 선택한 경우 해당 파일에는 “error.jsp”라는 이름이 지정됩니다.

이 스프링 부트 애플리케이션의 특정 인스턴스는 Thymeleaf 템플릿 엔진을 사용하지만 오류 처리를 위해 지정된 템플릿 파일의 이름이 “error.html”이라는 점에 유의해야 합니다. 적절한 구성과 손쉬운 접근성을 보장하려면 이러한 오류 템플릿을 다른 모든 관련 템플릿 파일과 함께 리소스 디렉터리 내에 있는 템플릿 폴더 내에 일관되게 배치하는 것이 좋습니다.

error.html 파일

 <!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
 <head>
     <title> Error</title>
     <link rel="stylesheet" th:href="@{/css/style.css}"/>
 </head>
 <body th:style="'background: url(/images/background1.jpg)
 no-repeat center center fixed;'">
     <div class="container" >
       <h1>An error has occurred...</h1>
       <img th:src="@{/images/error-icon.png}"
       width="100px" height="100px" />
       <p>There seems to be a problem with the page you requested
       (<span th:text="${path}"></span>).</p>
       <p th:text="${'The status code is ' + status
       + ', which means that the page was ' + error + '.'}"></p>
       <p th:text="${'Further details: ' + message + '.'}"></p>
       <a class="btn" href="/home">Back to home</a>
     </div>
 </body>
</html>

맞춤형 오류 페이지는 여러 가지 용도로 사용됩니다. 첫째, 오류의 존재를 알립니다. 둘째, 오류를 유발한 특정 HTTP 요청을 표시합니다. 셋째, 오류와 관련된 해당 상태 코드를 공개합니다. 그러나 사용자가 상태 코드에 익숙하지 않은 경우 페이지에서는 오류 메시지 속성을 통해 그 의미를 추가로 설명합니다.

이 글도 확인해 보세요:  프리랜서 웹 개발자가 원격 근무를 할 수 있는 상위 10가지 웹사이트

예외의 경우, 결론 구절에서 사용자에게 커뮤니케이션을 제공합니다.그 후, 정점에 있는 하이퍼링크를 통해 CSS 디자인 템플릿과 두 개의 그래픽 요소를 사용하여 후속 관점을 생성하는 error.html 문서를 통해 기본 웹페이지로 다시 이동할 수 있습니다.

오류 페이지를 사용자 친화적으로 유지

사용자에게 불행한 이벤트에 대한 정보를 전달하는 수단으로서의 필수 기능을 수행하는 동시에, 오류 페이지를 전반적인 사용자 경험을 향상시키는 방식으로 디자인하는 것도 마찬가지로 중요합니다.

다른 접근 방식은 불필요한 복잡성 없이 오류 메시지를 전달하는 더 간단한 오류 속성을 활용하는 것입니다. 이 경우 복잡한 ‘추적’ 속성보다는 ‘경로’ 속성을 사용하는 것이 더 바람직할 수 있는데, 후자는 잠재적으로 최종 사용자에게 부담을 줄 수 있는 불필요한 정보를 포함할 수 있기 때문입니다.

당사 소프트웨어의 복잡성에 관한 포괄적인 세부 정보를 임의의 개인에게 공개하는 것은 시스템의 안전과 무결성을 훼손할 수 있으므로 바람직하지 않습니다.

By 박준영

업계에서 7년간 경력을 쌓은 숙련된 iOS 개발자인 박준영님은 원활하고 매끄러운 사용자 경험을 만드는 데 전념하고 있습니다. 애플(Apple) 생태계에 능숙한 준영님은 획기적인 솔루션을 통해 지속적으로 기술 혁신의 한계를 뛰어넘고 있습니다. 소프트웨어 엔지니어링에 대한 탄탄한 지식과 세심한 접근 방식은 독자에게 실용적이면서도 세련된 콘텐츠를 제공하는 데 기여합니다.