Java | Checked & Unchecked Exception

DoItDev·2022년 1월 8일
0
post-thumbnail

Overview

Exception이란 예외란 프로그램에서 발생되는 에러를 의미를 한다.

예외 처리를 한다고 말을하면 그 예외를 흘리는 방법 혹은 유저에게 처리를 해서 예외에 대한 문구를 주는 방법이 있다.

예외를 사용하는 방법 중 하나인 try~catch 문이 있다.

try~catch 문의 경우 아래의 코드 처럼 사용을 한다.

        try {
        // 로직
        }catch (Exception e){
            e.printStackTrace();
        }finally {
         // 무조건 처리하는 로직
        }

위의 try 구문 안에는 비지니스 로직 혹은 로직을 작성을 한다.

여기서 try 안에서 우리는 catch 잡을 exception을 넣어준다. 위의 코드에는 예로 Exception을 넣었다.

그렇다면 만약에 NullPointException을 처리를 하기 위해서는 NullPointException을 선언을 해준다면 NullPoint Error 가 발생이 된다면 catch 문에 도달하게 된다.

catch 문에서는 여러가지 처리 로직을 구현이 가능하다.

예로 만약에 db 에서 에러 발생시에 대한 데이터를 저장이 필요가 가능하다면 catch 문에 저장 로직을 넣어 주면 된다.

그리고 finally 구문에서는 정상적으로 작동이 되던 아니면 에러가 발생이 되던 로직이 실행이 된다.

그렇기 때문에 finally구문을 작성을 안하는 방법도 있다.

try~catch 문으로 해당 메소드에서 바로 예외를 처리하는 방법이 있다.

하지만 예외를 상위 메소드로 던지는 방법이 있다.

    public SseEmitter handle() throws Exception{
        return sseService.baseEvent();
    }

메소드 뒤에서 throws 구문과 던질 예외를 선언을 해준다면 사용되는 메소드 위의 계층에서 예외를 잡을 수 있다.

그렇기 때문에 하나의 예외를 처리를 하는 것이 아니라 다른 메소드에서 예외를 잡는 로직을 한곳에서 처리 하게 로직을 설계를 가져 갈 수 있다. (개발자가 로직에 대한 설계가 필요할 것이다)

Checked & Unchecked Exception

Exceptoin의 경우 check 하는 exception 과 uncheck를 하는 exception 으로 구분이 가능하다.

RuntimException을 상속하는 Exception의 경우 Unchecked Exception으로 분류가 가능하고 RuntimeException을 상속 하지 않는 다면 Checked Exception 이라고 한다.

  • unchecked exception의 경우 runtime exception을 상속한다.
  • checked excepton의 경우 runtime exception을 상속 하지 않는다

항목checked exceptionunchecked exception
예외 처리 시점컴파일 시점에서 예외 처리런타임 중에 예외처리
처리유무반드시 예외를 처리 해야 한다명시적으로는 예외를 처리안해도 되지만 예외 처리할때는 해야한다
트랜잭션 처리롤백 대상에서 제외 된다롤백이 된다
profile
Back-End Engineer

0개의 댓글