emovie
우당탕 개발 💭
emovie
전체 방문자
오늘
어제
  • ALL (42)
    • Java (6)
    • DB,SQL (3)
    • Network (1)
    • DevOps (1)
      • Docker (1)
    • Git (2)
    • Algorithm (8)
    • Design Pattern (2)
    • Data Structure (2)
    • Software Engineering (1)
    • Issue (4)
    • Book (3)
    • TIL (3)
    • Work Experience (2)
    • Conference (1)
    • 회고 (1)
    • 모음 (2)

블로그 메뉴

    공지사항

    인기 글

    태그

    • MSSQL
    • 시스템테스트
    • DesignPattern
    • TIL
    • ApacheAirflow기반의데이터파이프라인
    • ApacheAirflow
    • 위클리챌린지
    • axios POST 403 Forbidden Error
    • fmt:parseDate
    • context root
    • Issue
    • Git
    • 프로그래머스
    • 회고
    • 제이펍전문서리뷰어2기
    • IT서적리뷰
    • 자료구조
    • 자바
    • AWS로시작하는인프라구축의정석
    • server path
    • parseLocale
    • It
    • 책리뷰
    • 제이펍
    • java
    • 책
    • git history 정리
    • 프로그래머의뇌
    • IT서적
    • Jpub

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    emovie

    우당탕 개발 💭

    Java

    예외 exception

    2023. 5. 5. 16:35

    프로그램 오류(error)

    프로그램이 정상적으로 실행되지 못하고 오작동 또는 비정상적 종료를 발생시키는 경우를 말한다.

    자바(.java) → 기계어(.class)로 변환하는 과정을 ‘컴파일’(compile)이라고 한다. 컴파일러는 컴파일 과정에서 문법 검사를 진행한다. 이 과정에서 문제가 있는 경우 오류 메시지와 함께 컴파일을 중단한다. 컴파일 중 불명확한 코드에 대해서 경고를 보내기도 한다. 오류 메시지를 보고 잘못된 코드를 수정하는 과정을 ‘디버깅’(debugging)이라고 한다. 오류 발생시점에 따라 ‘컴파일 오류’(compile error)와 실행 오류(runtime error)로 나뉜다. 컴파일 오류는 구문(syntax) 오류가 발생하고, 실행 오류로는 논리(logic) 오류, 시스템(system) 오류, 예외(exception)가 발생한다.

     

    예외(Exception)

    프로그램 실행 중 흐름이 중단되는 것을 말하며 오류와 다르게 대처를 가능케 하여 프로그램의 실행이 중단되지 않게 한다. 프로그램의 실행이 중단되지 않도록 대처하는 과정을 ‘예외 처리’(exception handling)이라고 한다.

    try{
    	// 예외 발생 가능성이 있는 코드를 작성
    } catch(Exception e) {
    	// 예외 발생 시 처리 또는 로그 코드 작성
    } finally {
    	// 예외 발생과 관계없이 마지막 단계에서 무조건 실행
    }
    
    // try-with-resources
    // 반납할 resource가 있는 경우 try-with-resources를 사용하면 finally에서 반납하지 않아도 자동으로 반납
    try(InputStream input = new FileInputStream(source)) {
    	// try 구문
    } catch(Exception e) {
    	// 예외처리구문
    }

     

    예외처리(exception handling)

    예외는 ‘검증된(checked) 예외’와 ‘검증되지 않은(unchecked) 예외’로 나뉜다. 검증된 예외는 컴파일러가 검증하는 예외이며, 사용자 정의 예외라고도 한다. 예측이 가능하며 수습도 가능하기 때문에 반드시 예외처리를 한다. 검증되지 않은 예외는 컴파일러가 검증하지 못하는 예외이며, 실행 예외(runtime exception)가 속한다. 검증되지 않은 예외는 예외 처리를 하기보다 예외가 발생하지 않도록 버그를 잡아야 한다.

    예외처리방법

    1. 예외 복구
      • try ~ catch - 상위 클래스에 제공하는 데이터에서 이상이 없고, 자신이 처리하는 동안 발생한 예외이므로 자신이 처리할 책임을 가짐
    2. 예외 처리 회피
      • throws - 데이터를 제공하는 곳에서 예외를 처리할 책임이 있으니 상위 클래스로 예외를 던짐
    3. 예외 처리 전환
      • throws 하기 전 Exception 객체를 전환해 던진다 전환하는 이유는?
      1. 발생한 예외의 의미를 명확하게 하고 싶거나
      2. 복구 불가능한 예외를 RuntimeException()으로 던져 불필요한 throws 선언을 하지 않도록 하거나

    예외처리전략

    • 예외로 무엇을 할지 알 때까지는 잡지 않는다.
    • 예외가 발생할 시 해당 절차를 다루는 클래스(또는 어떻게 해야 하는지 알고 있는)까지 예외를 던진다.
    • 예외처리 전략의 과정
      1. 예외 클래스를 정의하고, 언제, 어디서 던지고, 잡아 처리할 지 결정
      2. 비즈니스 로직에 전념하고 예외 처리가 필요한 곳에는 주석으로 예외처리 표시
      3. 예외 처리가 필요한(주석 처리 부분) 곳에 실제로 에러 처리 코드 삽입
    저작자표시 (새창열림)
      'Java' 카테고리의 다른 글
      • 배열
      • [ 4,5,6 ] 제어문과 반복문
      • [ 3 ] 연산자
      • [3] 변수, 상수, 리터럴 상수
      emovie
      emovie

      티스토리툴바