참고 : https://joont92.github.io/java/%EC%98%88%EC%99%B8%EC%B2%98%EB%A6%AC/
Error -> 단순히 예외라고 하기에는 심각한 오류의 상황을 표현하는 예외
try~catch문 -> swtich~case문이랑 비슷하게 위에 있는 catch{}문의 조건에 걸리면 밑에 있는 것들을 무시함
그렇기 때문에 최상위 예외 클래스인 Exception을 가장 위에 걸쳐 놓으면 좋지 않은 try~catch문이다
finally 구문은 예외가 발생하든, 발생하지 않든 항상 실행되는 부분이다.
보통 자원반납 및 로깅처리를한다.
throws 구문의 의미는 throws OOException에서의 OOException이 발생할 경우 그 예외 처리를
자신을 호출한 쪽으로 던져버린다는 의미이다. 처리를 위임한다는 뜻으로 생각하면 된다.
main메서드 또한 Exception을 throws할 수 있는데, 그러면 main메서드를 호출한 것은 무엇일까?
-> JVM(자바가상머신)
가상머신의 예외처리방식
1. e.getMessage() 메서드 호출
2. e.printStackTrace() 메서드 호출 ( 이 메서드는 시스템출력이라 로그에 안찍힘 )
3. 프로그램 종료
사용자가 임의로 custom하는 사용자 예외 처리 방식도 있어요!
Checked Exception vs Unchecked Exception
Checked Exception은 RuntimeException을 상속하지 않는 모든 예외이다
반드시 try~catch문이나 throws를 통해 처리를 해줘야 한다
항상 문법적으로 체크한다 라는 의미로 생각을 하면 좋을 것 같다.
ex) IOException, SQLException
예외 발생시 트랜잭션의 롤백과 관련된 내용이 있는데
'checked Exception은 트랜잭션을 롤백하지 않고 unchecked Exception은 트랜잭션을 롤백한다'
는 내용이 있다 이는 스프링의 기본 설정에 한정되어 있는 내용임
트랜잭션 롤백 여부는 애초에 사용자가 임의로 조절할 수 있는 부분이라고함
Unchecked Exception은 RuntimeException을 상속하는 예외이다.
개발자가 부주의한 경우 발생하는 예외들이라 굳이 문법적으로 체크하지 않아도
런타임 과정에서 알아서 잡아줌
해당 예외 처리하는 코드를 작성하는 것은 선택사항임
ex) NullPointerException, IllegalStatementException, Arithmeticexception (/ by zero)
'무지성 메모' 카테고리의 다른 글
■ 해쉬 알고리즘이 고정된 길이의 암호화길이를 가지는 이유? (0) | 2023.01.13 |
---|---|
■ 대문자로만 이루어진 문자인지 판별 (0) | 2022.03.19 |
■ AJAX를 쓰는 이유..? (0) | 2022.03.15 |
■ Get/ post, put, delete ■ 스프링 기본 파싱 전략 (0) | 2022.03.14 |
■ string클래스의 역순 출력 함수 (0) | 2022.03.10 |