본문 바로가기
Programming/Java

[whiteship 온라인 스터디] 9주차 과제 - 예외처리

by 읽고 쓰는 개발자 2021. 2. 13.

github.com/whiteship/live-study/issues/9

 

9주차 과제: 예외 처리 · Issue #9 · whiteship/live-study

목표 자바의 예외 처리에 대해 학습하세요. 학습할 것 (필수) 자바에서 예외 처리 방법 (try, catch, throw, throws, finally) 자바가 제공하는 예외 계층 구조 Exception과 Error의 차이는? RuntimeException과 RE가

github.com

목표

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

학습할 것 (필수)

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

 

1. 자바에서 예외 처리 방법 (try, catch, throw, throws, finally)

  • catch문이 여러개라도 하나만 실행됨. 예외가 발생하면 즉시 실행을 멈추고 해당하는 첫번째 catch 블록으로 이동.
  • 따라서 catch 순서는 하위 예외 클래스가 먼저 와야함

throws : 예외 떠넘기기 

  • 메소드를 호출한 곳으로 예외를 떠넘기는 방법
  • 최종적인 예외 처리는 JVM이 한다. 예외가 JVM까지 떠넘겨지면 콘솔에 예외의 내용을 출력하는 것으로 예외 처리가 진행된다.
리턴타입 메소드명(매개변수, ...) throws 예외클래스1, 예외클래스2, ... {

}

 

▲ JVM은 프로그램을 실행하는 도중에 예외가 발생하면 해당 예외 클래스로 객체를 생성하고, 예외 처리 코드에서 예외 객체를 이용할 수 있게 해줌.

 

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

이미지 출처 : https://www.geeksforgeeks.org/exceptions-in-java/

Throwable is the highest level of Error Handling classes. 

 

3. Exception과 Error의 차이는?

에러 : 컴퓨터 하드웨어의 오동작 또는 고장으로 인해 응용프로그램 실행 오류가 발생하는 것. JVM 실행 자체에 문제. 실행 불능

예외 : 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류. 예외 처리(Exception Handling)을 통해 프로그램 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다.

 

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

Checked Exception(일반예외, 컴파일러 체크 예외)과 Unchecked Exception(Runtime Exception)의 차이점

  • Checked Exception : Runtime Exception과 Runtime Exception을 상속받는 예외처리 클래스를 제외한 클래스
    • 컴파일 타임에 일어나거나 I/O시 일어나는 예외들
    • 컴파일 하는 과정에서 예외 처리  코드가 필요한지 검사. 예외 처리 코드가 없으면 컴파일 오류 발생
  • UnChecked Exception : Runtime Exception과 Runtime Exception을 상속받는 예외처리 클래스 
    • 런타임시 발생하는 예외는 UnChecked Exception이다.

5. 커스텀한 예외 만드는 방법

Programmer defined classes (프로그래머가 정의하는 예외처리 클래스)

  • class CheckedException1 extends Exception
  • class CheckedException2 extends CheckedException1
  • class UnCheckedException extends RuntimeException
  • class UnCheckedException2 extends UnCheckedException

 

이전에 정리한 자바 예외 처리 글을 참고하였다.

 

 

출처: 이것이 자바다 (신용권 저)