[JAVA] 예외처리

dadev·2021년 9월 30일
2

Java

목록 보기
8/12
post-thumbnail

👉예외

예외를 그 자리에서 처리하는 방법 : try-catch 블록 사용

메소드가 예외를 발생시킨다고 기술하는 방법 : throws를 사요하여, 다른 메소드한테 예외 처리를 맡김.



👉 예외 처리 메서드

printStackTrace() 메서드

: 현재의 호출 스택의 내용을 화면에 보여주는 메서드

: 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력

getMessage() 메서드

: 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있음.



👉 Exceiption과 RuntimeException

RuntimeExceiption클래스와 그 자손 클래스 : RuntimeException 클래스들이라 하고,

RuntimeException클래스들을 제외한 나머지 클래스들 : Exception클래스들이라 칭함.


⭐ Exception 클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외

⭐ RuntimeException 클래스들 : 프로그래머의 실수로 발생하는 예외



👉 예외처리의 정의와 목적

✔ 정의

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

✔ 목적

프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것



👉 try-catch문에서의 흐름

✔ try블럭 내에서 예외가 발생한 경우

1. 발생한 예외와 일치하는 catch블럭이 있는지 확인

2. 일치하는 catch 블럭을 찾으면, 그 catch 블럭 내의 문장들을 수행하고 전체 try-catch문을 빠져나가서 그 다음 문장을 계속해서 수행

✔ try 블럭 내에서 예외가 발생하지 않은 경우

1. catch 블럭을 거치지 않고 전체 try-catch문을 빠져나가서 수행 계속함.



❗ 오류

1. 컴파일 에러

2. 런타임 에러

Error와 Exception으로 나뉨.


< Exception >

✔ Exception과 자손 : checked 예외 --> try-catch 필수!

✔ RuntimeException과 자손 : Unchecked 예외 --> try-catch 해도되고 안해도됨.

3. 논리적 에러



👉 연결된 예외(Chained exception)

Throwable initCase(Throwable cause) : 지정한 예외를 원인 예외로 등록

Throwable getCause() : 원인 예외를 반환


❓ 여기서 질문!

발생한 예외를 그냥 처리하면 되지, 왜 굳이 원인 예외로 등록해서 다시 예외를 발생시키나?


⭐ 여러가지 예외를 하나의 큰 분류의 예외로 묶어서 다루기 위해!


👉 연결된 예외 사용이유

✔ Checked 예외를 Unchecked 예외로 변경할 때 사용

즉, 필수처리 예외를 선택처리 예외로 바꾸고 싶을 때 사용!



참고한 내용

자바의 정석 chapter8 참고

profile
매일매일 최선을 다하는 개발자

0개의 댓글