예외 처리 개념 정리

정병웅·2023년 4월 16일
0

자바

목록 보기
5/8

기술 면접을 진행하면서 에러처리의 질문에 대해 처음 받아보았고, 앞으로도 예외처리에 대한 기본 지식이 있어야할 것 같아 정리해본다.

에러의 종류

컴파일 에러

-> 소스코드를 컴파일 하면서 컴파일러에 의해 check된 에러를 컴파일 에러라고 한다.

런타임 에러

-> 프로그램을 구동하면서 발생하는 에러이다.
-> 자바에서는 에러와 예외로 구분이 되는데, 우선 에러는 메모리부족, 스택오버플로우와 같이 프로그램이 구동하다가 복구가 되지 않고 종료 될 정도로 심각한 오류이다.
예외는 프로그램상에 오류가 발생하더라도 개발자가 예방할 수 있고, 미리 소스코드에서 조치를 취해서 비정상적인 종료를 막을 수 있다.

예외 상속 구조

Exception

Exception 클래스와 그 하위 자손 클래스의 경우 우리가 코드를 짜면서 쉽게 볼 수 있는 FileNotFoundException, SQLException등이 있다.

Unchecked Exception

컴파일러가 예외처리를 확인 하지 않을 경우 uncheckedException이라고 하며, RuntimeException의 클래스들이 있다.

Checked Exception

컴파일러가 예외처리를 확인하는 경우에 checked Exception이라고 한다.

try~catch~finally

try

예외가 발생 할 확률이 있는 코드를 감싼다.

catch

try 에서 에러가 발생할 경우 해당 에러를 어떻게 처리 할 지 정의할 수 있는 부분이다.
여러개 정의가 가능하다.

finally

catch에서 로직이 실행 되고, 그 후 실행되는 부분이다.
여러개의 catch가 발생하여도 공통적으로 그 후에 실행되는 코드를 보통 작성한다.

throw

제어권을 try에서 catch로 전송할 때 사용한다.
-> try에서 일부러 예외를 발생시켜 catch에서 처리한다는 의미

public class Test {
  public static void main(String[] args) {
    try {
      throw new NullPointerException();
    }
    catch (NullPointerException e) {
      System.out.println("null 예외");
    }
    finally {
      System.out.println("Finally");
    }
  }
}

try에서 nullpointerException을 강제로 발생시켰고, throw 키워드를 이용했기 때문에 catch 로 이동하여 catch의 소스코드를 실행 시킨다.

참고
https://velog.io/@sewonkim/Java-Checked-Exception%EA%B3%BC-Unchecked-Exception%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%B4%EC%95%BC-%ED%95%A0%EA%B9%8C

profile
인생은 IT 노가다

0개의 댓글