☕ 자바 JAVA/☕ 개념지식

[JAVA]Error & Exception. 예외의 종류.

뉴이 NUEY 2024. 11. 3. 14:24
반응형
예외 & 에러
Exception & Error
  • 에러 Error
    • 간단히 말해 에러는 심각한 경우를 말합니다.
      ex) 시스템상 메모리부족. OOME:Out Of Memory Error.
  • 예외 Exception
    • 코드를 Run하기 전, 컴파일 과정에서 개발자가 처리할 수 있는 경우에서 발생하는 작은 오류 등을 얘기 합니다.
      ex) 타입변환의 오류 
예외가 발생하면 예외 객체 Exception 이 만들어집니다.

이 예외 객체 안에는 예외에 대한 정보가 담겨있습니다.
개발자들이 자주 사용하는 printStackTrace()와 getMessage()함수로 예외에 대한 정보를 불러올 수 있습니다.

2024.11.01 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]printStackTrace() & getMessage(), 멀티 catch블럭


※ 예외처리 목적
프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것.

프로그램 오류의 종류
  • 컴파일 에러 compile-time error
    • 컴파일 중 발생하는 에러.
    • 프로그램이 시작도 안된다.
    • 컴파일이 하는 일.
      • 구문체크.
      • 번역.
      • 최적화.

cmd에서 경로로 간 뒤, javac 클래스명.java를 쳐 보면 컴파일 에러가 뜨는 걸 알 수 있다. 에디터에서 이 부분을 알아서 체크해주고 있는 것.


  • 런타임 에러 runtime error
    • 실행 중 발생하는 에러.
    • 프로그램이 종료된다.
  •  

컴파일상으로는 에러가 없지만 run실행해보면 error가 나타난다.


  • 논리적 에러 logical error
    • 작성의도와 다르게 동작한다.

RuntimeException class

RuntimeException도 Exception의 자손이긴하다.

RuntimeException에 속하는 예외들은 프로그래머의 실수로 발생한다.
RuntimeException에 속하지 않는 예외들은 사용자의 실수 혹은 외적인 요인으로 발생한다.

checked & unchecked
Exception
  • checked exception
    • 컴파일러가 예외 처리 여부를 체크한다.
    • 예외 처리 필수.
    • (RuntimeException을 제외한)Exception에 속한 예외들.
    • try-catch문이나 throws에 명시하여 예외를 처리해야 합니다.
    • ex) IOException, SQLException.
  • unchecked exception
    • 컴파일러가 예외 처리 여부를 체크 안한다.
    • 예외 처리 선택.
    • RuntimeException에 속한 예외들이 이에 속한다.
    • ex) NullPointerException, ArrayIndexOutOfBoundsException, IllegalArgumentException.

예시

  • wait 함수의 API문서를 보면
  • 이 함수를 사용할 때 발생할 수 있는 예외Throws에 적혀있다.

왼쪽 예외는 RuntimeException에 속하므로 unchecked exception이다.

  • 반대로 InterruptedException은 필수로 예외를 처리해주어야 한다.
함수선언 시,
함수명 throws 예외에는 필수처리 예외checked exception만! 적는 게 정석이다.
→ throws 옆에 unchcecked는 안 적는다.

예외처리 방법

2024.09.25 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]예외처리:throw & throws, try-catch.

2024.11.04 - [☕ 자바 JAVA/☕ 클래스와 함수 Class & Method] - [JAVA]사용자정의 예외클래스 만들기, 연결된 예외

 

참조한 영상 https://www.youtube.com/watch?v=Px3u24AvadM&list=PLW2UjW795-f6xWA2_MUhEVgPauhGl3xIp&index=101

반응형

'☕ 자바 JAVA > ☕ 개념지식' 카테고리의 다른 글

[JAVA]Object:모든 클래스의 조상  (0) 2024.11.05
[JAVA]호출 스택 call stack  (0) 2024.10.31
☕ JAVA란  (0) 2022.12.30