저는 이전에 예외를 처리할 때, 그저 컴파일러에서 추천해주는 해결법으로 alt enter 클릭으로 수정하는 것 밖에 안했습니다. 에러를 대응 하는 방법을 잘 몰랐는데 이번에 공부하면서 알게 되었기 때문에 포스팅 합니다.
Exception
자바의 예외 처리는 다음 키워드를 사용한다.
try, catch, finally, throw, throws
Object -> Throwable -> Exception
RuntimeException을 제외한 Exception을 상속한 예외는 모두 컴파일러가 체크한다
RuntimeException은 언체크 예외, 애플리케이션 구동중 발생하는 에러
알 수 없는 에러이기 때문에 좋지못하다.
예측 불가능한 에러는 좋지못한 에러 -> Unchecked Exception
예측 가능한 컴파일 단계에서 알수 있는 에러는 좋은 에러 -> Checked Exception
예외 기본 규칙
1. 예외는 잡아서 처리하거나 밖으로 던져야한다.
2. 예외를 잡거나 던질 때 지정한 예외 뿐만 아니라 그 예외의 자식들도 함께 처리할 수 있다.
예외를 처리하지 못하면 main밖으로 나가면서 시스템이 종료가 됨.
throws는 발생시킨 예외를 메서드 밖으로 던질 때 사용하는 키워드
"예외를 못처리 하겠으니 다른 곳에서 해결해줘" -> throws
"예외를 생성하고 던질게" -> throw
throw와 throws의 차이를 명확히 해야한다.
보통 컴파일 단계에서의 에러는 alt+enter로 수정한다.
예외 상황을 처리하지 않으면 두가지 경우로 수정이 가능한데 첫번째는 method signature 이다.
method signature은 throws를 사용하여 메서드를 호출한 바로 상위의 객체에게 에러 처리를 위임한다.
이렇게 상위 메서드가 exception을 받게되면 처리하는 코드도 필요한데, 이것이 try catch 문이다.
try catch문을 통해 exception을 잡아서 행동을 정의할 수 있다.
평소 exception을 잘 모르고 그냥 try catch와 throws가 동일한 방법인 줄 알고 아무거나 썼었는데 이해하고 사용함의 중요성을 느꼈다.
throws는 상위 메서드로 위임시키고, 위임을 받은 메서드도 throws를 하게되면 또 상위에 위임 시키고, 이것을 반복하다가 최상위 main메서드에서도 처리를 해주지 않으면, 프로세스가 종료된다.
main 이 종료되기 전, try catch를 통해 예외를 처리해준다면, main이 죽지않고 try catch문에서 할당한 작업이 실행된다.
반응형
'BackEnd > Java' 카테고리의 다른 글
[Java] 컬렉션 프레임워크 와 배열, 리스트 (3) | 2024.07.24 |
---|---|
[Java] 예외 계층과 실무에서의 예외 처리 방법 (0) | 2024.07.17 |
[Java] 이것이 자바다 - 3장 연산자 (1) | 2024.06.08 |
[Java] 이것이 자바다 - 2장. 변수와 타입 (1) | 2024.06.08 |
[Java] 스프링 개구리 책 - 붕어빵틀과 붕어빵에 대한 오해 (0) | 2024.05.27 |