웹(에러처리)

제이·2023년 4월 26일
0

목록 보기
10/15
post-thumbnail

에러 처리

익셉션 직접 처리하기

오류가 사용자에게 노출되면 신뢰도가 추락한다.
방법1.try-catch : 좋은 방법이 아니다.
그 전에 jsp파일에서 입출력연산하면, 예외처리 안했다. 예외가 안나온다.
자바파일로 바뀌고 실행된다.
service()메서드가 이미 예외처리를 throw하고 있어서 jsp파일에서 예외처리를 하지 않아도 된다.

더 좋은 방법

방법2.에러페이지 지정, 작성하기
사용자에게 에러처리를 해주는 게 아니라, 준비된 것처럼 대신해서 보여주는 페이지를 설정하는 거. 준비되지 않은 것(막 500숫자 나오는 페이지)을 보여주지 않겠다는 의미.

에러페이지 지정 : <%@ page errorPage = "jsp파일명" %>
에러페이지 작성 : <%@ page isErrorPage = "true" %>
: 'true'로 지정하면, jsp페이지는 에러 페이지가 된다. 에러페이지로 지정된 jsp파일은 exception 기본 객체를 사용할 수 있다.

  • 응답상태코드가 400, 404나 500 등의 에러코드이고
  • 전체 응답 결과 데이터의 길이가 512바이트보다 작을 때
    => 이러면 익스플로러 자체 에러페이지를 보여준다.

응답 상태 코드별로 에러 페이지 지정하기

원래 jsp마다 일일이 지정하는 게 아니라 내가 만든 모든 jsp에서 404 or 500에러가 뜨면 화면을 보여준다. 코드별로 분할해서 정의할 수 있다.

<error-page> 태그는 한개의 에러 페이지를 지정한다.
<error-code> 태그는 에러 상태 코드를 지정한다.
<location> 태그는 에러 페이지로 사용할 jsp파일의 경로를 지정한다.

  • 오류코드
    200번대 : 정상
    300번대 : 리다이렉트
    400번대 : 클라이언트의 요청
    500번대 : 서버의 응답

익셉션 타입별로 에러 페이지 지정하기

<error-page>
  <exception-type> java.lang.NullPointerException</exception-type>
  <location>/error/errorNullPointer.jsp</location?
</error-page>

위의 코드처럼 적으면, NullPointerException이 발생할 경우 errorNullPointer.jsp를 에러 페이지로 보여준다.

에러 페이지를 여러 방법으로 지정한 경우 우선순위.(중첩될 때)

1순위. 페이지디렉티브
2순위. 익셉션타입
3순위. 에러코드

버퍼와 에러페이지의 관계⭐⭐

가능하다면, 예외를 올리면 된다.

에러페이지를 지정했음에도 제대로 동작하지 않는 상황.??
처음 출력버퍼에는 abc가 담기고 flush되버리면 헤더가 나가면서 브라우저한테 정상처리로 보내게 된다. 그럼 브라우저는 결과화면에 abc를 보내고 → de를 담았는데 e에서 에러가 났다! ⇒ de하다가 문제생겨서 de버리고 에러페이지의 xyz를 출력하게됨

어떤 특정한 jsp에 문제가 생기면 xyz만 깔끔하게 보여야되는데 이렇게 안 나옴. 에러알려주는 페이지랑 정상응답나오는게 섞여서 출력되는 경우가 진짜많다.(수강신청같은거 )

그럼 이거 어떻게 피해야할까? 페이지 디렉티브에서 출력버퍼를 바꿀 수 있었다. 밑의 예시 2번줄 처럼 <% page buffer = "1kb" %>!!!!
예외가 발생했다는 위치까지 한번에 버퍼를 담을 수 있도록 버퍼 크기를 늘려라. = 버퍼의 크기를 늘려라. 만약에 연산의 수행순서가 상관없다면 코드위치를 바꿔도 되는데(안될 가능성이 높음)

profile
Hello :)

0개의 댓글