경주장

9주차 과제: 예외 처리 #9 예외란 (~03.09) 본문

JAVA/whiteship_live-study

9주차 과제: 예외 처리 #9 예외란 (~03.09)

달리는치타 2022. 3. 2. 01:37

✔️ 학습할 것 (필수)

+ 예외란?

  • 자바에서 예외 처리 방법 (try, catch, throw, throws, finally)
  • 자바가 제공하는 예외 계층 구조
  • Exception과 Error의 차이는?
  • RuntimeException과 RE가 아닌 것의 차이는?
  • 커스텀한 예외 만드는 방법
Def) Exception
An exception is an event which occurs during the execution of a program, that disrupts the normal flow of the program's instructions

메소드를 실행하다가 에러가 발생하면 메소드는 "Exception Object" 를 생성하여 런타임 시스템에 전달합니다. "Exception Object"에는 에러 발생에대한 정보가 담겨있습니다. 예외(Exception Object)를 생성하고 런타임 시스템에게 전달하는 것을 예외를 던진다(throwing an exception) 라고 표현합니다.

 

예외가 발생하여 메소드가 예외를 던진 이후에는, 런타임 시스템은 예외를 다룰 수 있는 something을 찾습니다. 그런 "something"에는 메소드의 call stack이 있습니다. 

The call stack

런타임 시스템은 콜스택을 역순으로 순회하며 Exception을 처리할 수 있는 코드 블락인 Exception Handler를 찾습니다. 적절한 Handler가 발견되면 런타임 시스템은 예외를 Handler에게 전달 합니다. Handler는 예외의 타입을 바탕으로 예외 처리 여부를 판단합니다.

 

예외처리를 위해 선택된 Handler는 예외를 잡았다(catch)고 표현합니다. call stack의 마지막 (main method)까지 찾아보아도 적절한 Exception Handler를 찾지못하면 main method 마저 예외를 던지고 런타임 시스템이 종료됩니다.

 

Searching the call stack for the exception handler