📝오늘 공부한 것
- 자바의 정석 공부 - Chapter 09
- 이력서 수정하기
- 자바의 정석 스터디
📌 자바의 정석 스터디
[ 예외처리 ]
프로그램 오류
컴파일 에러 : 컴파일 시 발생하는 에러
런타임 에러 : 실행 시 발생하는 에러
논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것
에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외 클래스의 계층구조
Exception클래스들 : 사용자의 실수와 같은 외적인 요인에 의해 발생하는 예외
RuntimeException클래스들 : 프로그래머의 실수로 발생하는 예외
printStackTrace()와 getMessage()
printStackTrace() : 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력
getMessage() : 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있음.
unchecked예외 : 컴파일러가 예외처리를 확인하지 않는 RuntimeException
checked예외 : 예외처리를 확인하는 Exception클래스들
메서드에 예외 선언하기
메서드에 예외를 선언할 때 일반적으로 RuntimeException클래스들은 적지 않는다. 이 들을 메서드 선언부의 throws에 선언한다고 해서 문제가 되지는 않지만, 보통 반드시 처리해주어햐 하는 예외들만 선언한다.
자동 자원 반환 - try - with -resources
사용했던 자원을 반환하기위해서는 입출력에 사용되는 클래스 중에서는 사용한 후에 꼭 닫아 줘야하는 것들이 있다.
void addSuppressed(Throwable exception) : 억제된 예외를 추가
Throwable[] getSuppressed() 억제된 예외(배열)를 반환
가능하면 새로운 예외 클래스를 만들기보다 기존의 예외클래스를 활용하자!!
예외 되던지기(exception re-throwing)
예외가 발생할 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업을 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다. 다시 발생한 예외는 이 메서드를 호출한 메서드에게 전달되고 호출한 메서드의 try-catch문에서 예외를 또다시 처리한다.
→ 하나의 예외에 대해서 예외가 발생한 메서드와 이를 호출한 메서드 양쪽 모두에서 처리해줘야 할 작업이 있을 때 사용됨.
이때!주의할 점은 예외가 발생할 메서드에서는 try-catch문을 사용해서 예외처리를 해줌과 동시에 메서드의 선언부에 발생할 예외를 throws에 지정해줘야 한다는 것이다.
연결된 예외
Throwable initCause(Throwable cause) 지정된 예외를 원인 예외를 등록
Throwable getCause() 원인 예외를 반환
→ checked예외를 unchecked예외로 바꿀 수 있도록 하기 위해서 사용
'TIL(Today I Learned)' 카테고리의 다른 글
TIL-230926(자바의정석 Chapter09 'java.lang패키지와 유용한 클래스') (0) | 2023.09.26 |
---|---|
TIL-230925('행동대장' 코드리팩토링 - 회원관리 페이지) (1) | 2023.09.25 |
TIL-230922('행동대장' 코드리팩토링 - 마이페이지(2)) (0) | 2023.09.22 |
TIL-230921('행동대장' 코드리팩토링 - 마이페이지) (0) | 2023.09.21 |
TIL-230920(자바의정석 Chapter07 '객체지향 프로그래밍2') (0) | 2023.09.20 |