JAVA 기본

9주차 과제: 예외 처리 #9

홍박스 2021. 2. 27. 03:50
728x90

목표

자바의 예외 처리에 대해 학습하세요.

학습할 것 (필수)

  • 자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
  • 자바가 제공하는 예외 계층 구조
  • Exception과 Error의 차이는?
  • RuntimeException과 RE가 아닌 것의 차이는?
  • 커스텀한 예외 만드는 방법

자바에서 예외 처리 방법

try{ 오류가 발생가능한 로직

}

catch(오류사항){오류가 발생시 실행되는 로직

}

 

throw, throws

throw를 사용하면 개발자가 고의로 에러발생을 만들수 있다

예)만약 사람이 없다면 에러 발생 후 사람추가를 명시할 수 있다.

throws

현재 시점에서 예외처리가 아닌 다음사용자에게 맡기는것

크기가 커지면 현시점에서 처리하면 복잡해 질 수 있어서 추가적인 예외가 발생할 수 있다.

 

finally

예외에 관계 없이 실행되는 로직

 

자바가 제공하는 예외 계층 구조

Object
    |  -- Trowable
               |    -- Error
               |    -- Exception
                            |    -- RuntionException   ... UncheckedExcepion
                            |    -- CheckedException

 

Exception과 Error의 차이는?

예외와 오류의 차이

예외는 수정가능하지만 오류는 수정불가능

예외는 사용자가 잘못 조작 혹은 개발자의 코드오류

오류는 JVM에서 문제가 생김

 

RuntimeException과 RE가 아닌 것의 차이는?

자바에서 RE는 UE로 아닌것은 CE로 분류

가장 큰 차이는 

Checked Exception의 경우 예외를 예측하고 복구할 수 있기 때문에 예외를 처리하는 Exception Handler가 강제됩니다.

 

컴파일에러

ㄴ 코드에서부터 발생한 에러

런타임 에러

ㄴ 프로그램 실행중 발생한 에러

 

커스텀한 예외 만드는 방법

때때로 직접 예외를 커스텀할 경우가 생긴다.
예를들어 어떤 홈페이지에서 회원가입을 하려고 하는데 나이를 입력하던 도중 실수로 음수 나이를 적었다.

 

예외를 커스텀하기 위해선 Exception을 상속받아야한다.
그 후 생성자를 만들어 출력할 메시지를 받아 출력할 수 있다.
이때 기본 생성자를 만들어 사용하면 메시지없이 어떤 예외인지만 볼 수 있다.

 

출처 :leegicheol.github.io/whiteship-live-study/whiteship-live-study-09-exception-handling/

728x90