HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🍗
[New] 조규현팀
/
🏪
TS Store
/
예외와 오류의 차이

예외와 오류의 차이

Person
완료율%
상태
완료
나의 블로그
https://velog.io/@hye_b/Java-%EC%98%88%EC%99%B8%EC%99%80-%EC%98%A4%EB%A5%98
Think Sharing (TS)
🧨
Exception
주제목차내용🧵 Java의 예외와 오류🍔 Throwable🌽 오류 (Error)🧀 예외 (Exception)🤾‍♀️ throw (예외 고의로 던지기)🏌️‍♀️ throws (예외 떠넘기기)🤷‍♀️ 왜?🎐 자바 표준 예외👓 이 코드는 잘 돌아갈까요?🎇 펑 ! UnsuppoertedOperationException🍍 자바 예외 계층effective java 아이템 72reference
 

주제

 

목차

 

내용

🧵 Java의 예외와 오류

🍔 Throwable

notion image
  • 예외와 오류는 모두 Throwable 상속받습니다.
public static void main(String[] args) { int []arr = new int[2]; try { arr[2] = 1; } catch (ArrayIndexOutOfBoundsException e) { log.error("------- e -------" + e); log.error("------- e.getMessage() ------- " + e.getMessage()); log.error("------- e.printStackTrace() -------"); e.printStackTrace(); } }
notion image
  • getMessage() : 오류의 원인을 사람이 이해하기 쉬운 형태
  • printStackTrace() : 예외 메세지의 발생 근원지를 찾아 단계별로 출력 -> 가장 자세함

🌽 오류 (Error)

public class Test { public static void main(String[] args) { print("ERROR"); } private static void print(String error) { print(error); // StackOverflowError !! } }
  • 시스템 레벨에서 발생하는 개발자가 수습할 수 없는 심각한 문제
  • 개발자가 미리 예측하여 방지할 수 없음
  • ex ) OutOfMemoryError, StackOverflowError 등등

🧀 예외 (Exception)

  • 개발자가 구현한 로직에서 발생한 실수에 의해 발생
  • 개발자가 미리 예측하여 방지할 수 있어 상황에 맞는 예외 처리 필요
  • 예외는 catch, throw, throws 할 수 있다.

🤾‍♀️ throw (예외 고의로 던지기)

throw new Execption;
  • 정보를 주기 위해서 -> 예외가 없다면 비정상적으로 종료되고 당시 어떤 일이 일어났는지 정보를 알 수 없음
  • ex) user를 save 하기전에 이미 등록된 사용자가 있으면 예외를 던져버린다.

🏌️‍♀️ throws (예외 떠넘기기)

public void methodB() throws Exception { // Exception 발생 } public void methodA { try{ methodB(); } catch(Exception e) { // e } }
  • catch로 잡지않고 현재 메서드를 호출한 메서드로 예외를 떠넘김

🤷‍♀️ 왜?

notion image
  • 메서드 선언부에 선언된 throws문을 통해 어떤 예외가 발생할 수 있는지 예측할 수 있다.
  • 현재 메서드 내에서 예외 처리를 할 필요가 없다고 판단했을 경우 -> 팀원들이 내가 만든 메서드를 사용하는 경우, 팀원마다 예외를 다르게 처리할 수 있다.

🎐 자바 표준 예외

notion image

👓 이 코드는 잘 돌아갈까요?

notion image

🎇 펑 ! UnsuppoertedOperationException

notion image
  • java.util.Arrays.ArrayList 클래스는 set(), get(), contains() 메서드를 가지고 있습니다. -> 즉, remove는 지원하지 않음 -> 예외 발생 ! 주로 asList를 사용하다가 많이 보는 예외입니다 !

🍍 자바 예외 계층

<figure style="display:block; text-align:center;"> <img src="https://velog.velcdn.com/images/hye_b/post/7a667747-2b29-46a1-adc8-a414647f01a9/image.png" alt="text" style="width: 700px; margin:0px auto"> <figcaption style="text-align:center; font-size:15px; color:#808080"> </figcaption> </figure>

effective java 아이템 72

  • Exception, Throwable, Error, RuntimeException 은 직접 재사용하지 말자. 이 클래스들은 추상 클래스라고 생각하길 바란다. 이 예외들은 다른 예외들의 상위 클래스이므로 안정적으로 테스트할 수 없다.

reference

  • https://dololak.tistory.com/87
  • https://rollbar.com/blog/java-exceptions-hierarchy-explained/
  • https://docs.oracle.com/javase/8/docs/
  • https://www.youtube.com/watch?v=KkcXKr7972w
  • https://rollbar.com/blog/java-exceptions-hierarchy-explained/