[Java] 3. Exception

Exception

프로그램을 만든 프로그래머가 상정한 정상적인 처리에서 벗어나는 경우에 이를 처리하기 위한 방법

exception

Checked Exception

Exception을 상속받음

컴파일 시간에 검사하는 예외. 처리 하지 않으면 컴파일 에러가 나기 때문에 반드시 처리해야 함

try/catch 나 throws로 처리해주어야 한다.

트랜잭션이 Rollback되지 않는다.

Unchecked Exception

Runtime Exception을 상속받음

런타임 시간에 검사하는 예외. 주로 프로그래머의 실수, 사용자가 잘못된 사용을 할 때 발생 함.

트랜잭션이 Rollback 됨.

Exception Handling (Effective Java)

흠. 자바는 왜 Checked와 Unchecked로 나뉘어져 있는가?

API를 설계할 때 해당 메서드가 어떤 예외를 발생 시킬 수 있는가 또한 API 규약의 중요한 내용이고, 때로는 그런 예외에 대한 처리를 호출자에게 강제할 수 있어야 한다.

비즈니스 로직에서 발생한 예외는 전부 롤백이 되어야 하나?

예외 복구 전략이 명확하다면 Checked Exception을 사용해 try-catch로 잡고 복구를 수행한다. 그렇지 않다면 더 구체적인 Unchecked Exception을 발생시킨다.

무책임하게 상위 메서드로 throw를 던지는 행위는 상위 메서드들이 책임이 그만큼 책임이 증가한다.