자바의정석8(예외처리)

min seung moon·2021년 3월 4일
0

자바의정석

목록 보기
8/8
post-thumbnail

예외처리

1. 프로그램 오류 해결

01. 컴파일 에러(Compile-time error)

  • 컴파일 할 때 발생하는 에러

02. 런타임 에러(runtime error)

  • 실행 할 때 발생하는 에러 -> 프로그램 종료

03. 논리적 에러(logical error)

  • 작성 의도와 다르게 동작 -> 프로그램 종료 X, 실행은 됨

04. java의 런타임 에러

  • Error는 어쩔 수 없지만, Exception은 처리하자

Error(에러)

  • 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
  • OOME(OutOfMemoryError, 메모리 부족) ... 등

Exception(예외)

  • 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류

Exception 정의와 목적

  • 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것
  • 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

2. 예외 클래스의 계층 구조

3. Exception과 RuntimeException

Exception 클래스들(+ 자손클래스)

  • 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외

RuntimeException클래스들(+ 자손클래스)

  • 프로그래머의 실수로 발생하는 예외

4. 예외처리하기(try-catch문)

예외처리(eception handling)

  • 정의 : 프로그램 실행 시 발생할 수 있는 예외의 발생에 대비한 코드를 작성하는 것
  • 목적 : 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것

5. try-catch문에서의 흐름

  • 예외가 발생하면, 이를 처리할 catch블럭을 찾아 내려감
  • 일치하는 catch블럭이 없으면, 예외는 처리 안됨
  • Exception이 선언된 catch블럭은 모든 예외 처리(마지막 catch블럭)

6. printStackTrace()와 getMessage()

  • printStackTrace()
    • 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력
  • getMessage()
    • 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다
  • 예시

7. 멀티 catch블럭

  • 내용이 같은 catch블럭을 하나로 합친 것(JDK1.7부터)

8. 예외 발생시키기

  • 연산자 new를 이용해서 발생시키려는 예외 클래스의 객체를 만든 다음
    • Exception e = new Exception("고의로 발생시켰음");
  • 키워드 throw를 이용해서 예외를 발생시킨다
    • throw e;

9. checked예외, unchecked예외

  • checked예외 : 컴파일러가 예외처리 여부를 체크(예외 처리 필수)
  • unchecked예외 : 컴파일러가 예외처리 여부를 체크 안함(예외 처리 선택, runtimeException자손)

  • reuntimeException같은 경우에는 사소한 오류가 많기에 필수가 되면 모든 코드에 try-catch문을 작성해주어야 한다(그렇다고 에러가 안나는건 아니다, 컴파일 체크를 안할 뿐)

10. 메서드에 예외 선언하기

  • 예외를 처리하는 방법 : try-catch문, 예외 선언하기(예외 떠넘기기, 알리기)
  • 메서드가 호출시 발생가능한 예외를 호출하는 쪽에 알리는 것

  • 예제1
  • 예제2

11. finally 블럭

  • 예외 발생여부와 관계없이 수행되어야 하는 코드를 넣는다

12. 사용자 정의 예외 만들기

  • 우리가 직접 예외 클래스르 정의할 수 있다
  • 조상은 Exception과 RuntimeException중에서 선택

13. 예외 되던지기(exception re-throwing)

  • 예외를 처리한 후에 다시 예외를 발생시키는 것
  • 호출한 메서드와 호출된 메서드 양쪽 모두에서 예외처리하는 것

14. 연결된 예외(chanied exception)

  • 한 예외가 다른 예외를 발생시킬 수 있다
  • 예외 A가 예외 B를 발생시키면, A는 B의 원인 예외(cause exception)

  • [이유1] 여러 예외를 하나로 묶어서 다루기 위해서

  • [이유2] checked예외를 unchecked예오로 변경하려 할 때
profile
아직까지는 코린이!

0개의 댓글