[Java] 예외 처리

Updated:

컴퓨터 시스템이 비정상적으로 종료하는 상황에 대처하는 것

오류(error)와 예외(exception)


  • 컴퓨터 시스템이 동작하는 도중에 예상하지 못한 사태가 발생하여 실행 중인 프로그램이 영향을 받는 것을 오류(error)와 예외(exception) 두 가지로 구분가능 하다

오류(error)


  • 시스템 레벨에서 프로그램에 심각한 문제를 야기하여 실행 중인 프로그램을 종료
  • 개발자가 예측하기 어려우며 오류에 대한 처리는 할 수 없다
  • 문법오류 - 자바 프로그램을 작성할 때 컴파일러가 문법 오류(syntax error)를 발생

예외(exception)


  • 개발자가 미리 예측이 가능하다
  • 예외처리(exception handling)를 통해 컴퓨터가 비정상적으로 종료되는 경우를 핸들링 할 수 있다.

예외 처리(exception handling)


  • try / catch / finally 문
    • try : 기본적으로 맨 먼저 실행되는 코드로 여기에서 발생한 예외는 catch 블록에서 처리
    • catch : try 블록에서 발생한 예외 코드나 예외 객체를 인수로 전달받아 그 처리를 담당
    • finally : try 블록에서 예외가 발생하건 안 하건 맨 마지막에 무조건 실행
    • 중괄호 생략 불가
try {
    예외를 처리하길 원하는 실행 코드
} catch (e1) {
    e1 예외가 발생할 경우에 실행될 코드;
} catch (e2) {
    e2 예외가 발생할 경우에 실행될 코드;
}

..
finally
    예외 발생 여부와 상관없이 무조건 실행될 코드;
}

매커니즘

  1. try 실행시 예외가 발생(throw)하지 않고, finally 블록이 존재하면 프로그램의 제어는 바로 finally 블록으로 이동
  2. try 실행 예외 발생하면 catch 핸들러는 가까운 순서대로 차례대로 검사
  3. 적절한 catch 블록을 찾게 되면, throw 문의 피연산자는 예외 객체의 형식 매개변수로 전달
  4. 모든 예외 처리가 끝나면 프로그램의 제어는 finally 블록으로 이동
    • 만약 모든 catch 블록이 해당 예외를 처리할 수 없으면, 예외는 처리되지 못한 채 해당 프로그램은 강제 종료

image.png

참고


  • 자바의 정석
  • [강의](https://www.tcpschool.com/java]

Tags:

Categories:

Updated:

Leave a comment