예외처리

강민수·2022년 11월 7일
2

Java

목록 보기
8/9
post-thumbnail

예외처리


예외와 예외 클래스

  • 에러
    • 응용프로그램 실행 오류가 발생하는 것
    • JVM 위에서 실행되는 프로그램을 아무리 견고하게 만들어도 실행 불능
  • 예외
    • 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생되는 오류
    • 예외처리를 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 한다

일반 예외 VS 실행 예외

image
두 가지 모두 예외 처리가 필요하다.

  • 일반 예외(Exception)
    • 컴파일러 체크 예외라고도 한다
    • 자바 소스를 컴파일하는 과정에서 예외처리 코드가 필요한지 검사하기 때문
  • 실행 예외(Runtime Exception)
    • 컴파일하는 과정에서 예외 처리 코드를 검사하지 않는 예외
    • 오로지 개발자의 경험에 의해서 예외 처리 코드를 삽입

예외 처리 코드

image


프로그램에서 예외서 발생했을 경우 종료를 막고, 정상 실행을 유지할 수 있도록 처리하는 코드


try-catch-finally 블록을 이용

  • try 블록에는 예외 발생 가능 코드가 위치한다.
  • try 블록의 코드가 예외 발생 없이 정상 실행되면 finally 블록의 코드를 실행
  • finally 블록은 옵션으로 생략 가능

예외 종류에 따른 처리 코드

  • 다중 catch
    • 발생되는 예외별로 예외 처리 코드를 다르게 해야할 때
    • catch 블록이 여러 개라 할지라도 단 하나의 블록만 실행된다.
  • catch 순서
    • 주의할 점은 상위 예외 클래스가 하위 예외 클래스보다 아래쪽에 위치해야 한다.

예외 떠넘기기

try-catch 블록으로 예외를 처리하는 것이 기본이지만, 경우에 따라서는 예외를 떠넘길 수 있다.

  • thorws
    • 메소드 선언부 끝에 작성되어 메소드에서 처리하지 않은 예외를 호출한 곳으로 떠넘기는 역할
    • throws 키워드 뒤에는 떠넘길 예외 클래스를 쉼표로 구분해서 나열

사용자 정의 예외와 예외 발생

개발하다보면 자바 표준 API에서 제공하는 클래스만으로 표현하기는 부족하다.
image

  • 일반 예외로 선언할 수 있고, 실행 예외로 선언할 수 있다.
  • 일반 예외일 경우
    • Exception을 상속
  • 실행 예외일 경우
    • RuntimeException을 상속
profile
능동적으로 개발 지식을 찾아다니는 백엔드 개발자입니다 😊 작성된 글에 대한 질문들 및 피드백은 언제나 환영입니다 :) 👌

0개의 댓글