예외처리

suzi_911·2021년 7월 17일
0

예외처리는 왜 하죠?

  • 컴파일 오류
    프로그램 코드 작성중 발생하는 문법적 오류
    최근에는 개발환경에서 대부분의 컴파일 오류는 detection됨

  • 실행오류
    실행 중인 프로그램이 의도 하지 않은 동작을 하거나 프로그램이 중지 되는오류
    실행 오류는 비정상 종료가 되는 경우 시스템의 심각한 장애를 발생할 수 있음

예외 처리의 중요성

프로그램의 비정상 종료를 피하여 시스템이 원할이 실행되도록 함
실행 오류가 발생한 경우 오류의 과정을 재현하는 것은 현실적으로 힘들다
오류가 발생한 경우 log를 남겨서 추후 log 분석을 통해 그 원인을 파악하여 bug를 수정하는 것이 중요

try-catch문

try {
예외가 발생할 수 있는 코드 부분
}catch(처리할 예외 타입e){
try 블록 안에서 예외가 발생했을 때 예외를 처리하는 부분
}

try-catch-finally문

  • finally블럭에서 파일을 닫거나 네트웍을 닫는등의 리소스 해제 구현을 함(소켓을 계속 열고 사용할 수 없음 시스템에서 사용할 수 있는 소켓이 한정적임)
  • tyr{}블럭이 수행되는 경우, finally{}블럭은 항상 수행 됨
  • 여러개의 예외 블럭이 있는 경우 각각에서 리소스를 해제하지 않고 finally 블록에서 해제하도록 구현함

try-with-resources문

  • 리소스를 사용하는 경우 close()하지 않아도 자동으로 해제되도록 함
  • 자바 7부터 제공되는 구문
  • 리소스를 try()내부에서 선언해야만 함
  • close() 명시적으로 호출하지 않아도 try()블록에서 열린 리소스는 정상적인 경우나 예외가 발생한 경우 모두 자동으로 해제 됨
  • 해당 리소스는 클래스가 AutoCloseable 인터페이스를 구현 해야함
  • FileInputStream의 경우에는 AutoColseable을 구현하고 있음
  • 자바 9부터 리소스는 try() 외부에서 선언하고 변수만을 try(obj)와 같이 사용할 수 있음

예외처리 미루기

  • throw를 이용하면 예외가 발생할 수 있는 부분을 사용하는 문장에서 예외를 처리할 수 있음

0개의 댓글