👉예외
예외를 그 자리에서 처리하는 방법 : 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 참고