본문 바로가기

프로그래밍/Java

[Java 요약 정리] 2. 예외 처리(Exception handling)

1. 예외처리(Exception handling)

1) 프로그램 오류

- 컴파일 에러: 컴파일시 에러가 발생하는 경우

*컴파일러의 역할: 번역, 구문 체크, 최적화

- 런타임 에러: 실행 시 에러가 발생하는 경우

- 논리적 에러: 실행에 문제는 없으나 부정확한 동작을 하는 경우


2) 에러와 예외

- 에러: 프로그램 코드에 의해서 수습될 수 없는 심각한 오류

- 예외: 프로그램 코드에 의해 수습 될 수 있는 미약한 오류

- checked, unchecked: 컴파일러 check 유무

- Unchecked: RuntimeException클래스들 -> 프로그래머 실수(예외처리 선택)

- Checked: Exception클래스들 -> 사용자 실수 등 외적 요인(예외처리 필수)


3) TDD

- 테스트 주도 개발(Test-driven development TDD)

- 초기결함을 점검하는 자동화된 테스트 케이스 작성


4) 예외처리

- 정의: 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드 작성

- 목적: 프로그램 비정상 종료를 막고 정상 실행 상태를 유지하는 것

- 방법: 예외를 선언하거나 try-catch 구문 사용


5) 예외처리 방법

- try-catch구문 사용

- 예외 선언(throws): 메소드에서 처리, main에게 알림, 양쪽에서 처리


6) 예외처리 구문

- try-catch문을 사용하면 예외의 종류와 일치하는 단 한개의 catch 블럭이 수행

- Exception(최상위)을 처리하는 Catch블럭은 모든 예외 처리 가능(마지막 블럭에 위치)

- finally: 예외 발생 여부와 관계없이 실행되어야 하는 코드(마지막에 위치)

*return 수행시 finally를 수행하고 종료 /  exit수행시 바로 종료

- 중첩 가능(*중첩 시 참조변수값 주의)


7) 예외 고의 발생

- 객체 생성: Exception e = new Exception (“고의로 발생시켰음”);

- 예외 발생: throw e;

- 호출 스택 출력: printStackTrace();  // 처리된 예외 확인 용도로 사용


8) 메소드에 예외 선언

- 호출한 메소드에서 예외처리를 해야할 때 사용(예외를 호출한 메소드로 전달)

- 메소드 뒤에 throws Exception 추가해서 사용


9) 사용자 정의 예외 생성

- Exception 클래스를 상속 받아서 에러 코드를 저장

- ERR_CODE(int)와 메시지(String) 변수를 추가하고 getErrCode() 메소드 추가