예외처리

류정훈·2022년 12월 27일
0

학습내용

목록 보기
8/15

프로그램 오류

프로그램 수행 시 치명적 상황이 발생하여 비정상 종료 상황이 발생한 것, 프로그램 에러라고도 함
error, exception

  • 컴파일 에러 : 프로그램의 실행을 막는 소스 코드상의 문법 에러. 소스 코드 수정으로 해결.
  • 런타임 에러 : 프로그램 실행 중 발생하는 에러. 주로 if문 사용으로 에러 처리
    (ex. 배열의 인덱스 범위를 벗어났거나, 계산식의 오류)
  • 시스템 에러 : 컴퓨터 오작동으로 인한 에러, 소스 코드 수정으로 해결 불가

오류 해결 방법

소스 코드 수정으로 해결 가능한 에러를 예외(Exception)라고 하는데
이러한 예외 상황(예측 가능한 에러) 구문을 처리 하는 방법인 예외 처리를 통해 해결

  • java.lang.ArrayIndexOutOfBoundsException:
    배열에서 부적절한 인덱스에 접근하려고 할 때 사용될 수 있는 예외
  • java.lang.NegativeArraySizeException:
    배열의 크기로 음수를 제시했을때 발생할 수 있는 예외

예외 클래스 계층 구조

Exception과 Error 클래스 모두 Object 클래스의 자손이며 모든 예외의 최고 조상은 Exception 클래스
반드시 예외 처리해야 하는 Checked Exception과 해주지 않아도 되는 Unchecked Exception으로 나뉨

  • Unchecked Exception : 굳이 확인 안해도 되는 예외 : 선택적 예외처리
  • Checked Exception : 확인 꼭 해야되는 예외 : 예외처리 필수

예외 처리 방법

try~catch문을 이용하여 예외 처리
예외가 발생할 것 같은 코드 수행을 시도하다
-> 수행중 예외 발생시,예외 객체가 던져짐(throw)
catch(던진것을 받다) : try에서 던져진 예외를 잡아서 처리 -> 예외를 잡아 처리했기 때문에 프로그램이 종료되지 않음

  • try : Exception 발생할 가능성이 있는 코드를 안에 기술
  • catch : try 구문에서 Exception 발생 시 해당하는 Exception에 대한 처리 기술
    여러 개의 Exception 처리가 가능하나 Exception간의 상속 관계 고려해야 함
  • finally : Exception 발생 여부와 관계없이 꼭 처리해야 하는 로직 기술**
    중간에 return문을 만나도 finally구문은 실행되지만
    System.exit();를 만나면 무조건 프로그램 종료
    주로 java.io나 java.sql 패키지의 메소드 처리 시 이용

Exception과 오버라이딩

오버라이딩 시 throws하는 Exception의 개수와 상관없이 처리 범위가 같거나 후손 이여아 함

profile
It works...why?

0개의 댓글