항해 78일차
멘토링에서 조언해주신 대로 예외처리를 해봤다.
프로그램에서 예외는 발생할 수 밖에 없고 특히 예외로 인해 서버 프로그램이 작동을 멈출수도 있다는 피드백이 있었다. 예외가 발생하면 어떤 예외이고 이것이 무시해도 될 수준인지, 반드시 처리를 해야하는지, 시스템 자체를 종료시켜야 하는지에 대해 생각해봐야 한다.
시스템에서 물론 기능도 중요하지만 손쉬운 보완이라고 한다.
프로그램을 설계하고 구축하는 첫 단계에서 많은 예외상황에 대해 생각하고 고민해야한다.
Error : 시스템 단계에서 발생하며 시스템의 비정상적인 상황이므로 예외처리가 아닌 시스템 환경을 개선해야 한다.
Exeption : 프로그램 로직에서 발생하며 개발자가 작성한 로직에서 예외를 예상하여 구분하고 처리해야 한다.
모든 예외 클래스는 Throwable 클래스를 상속 받으며 Throwable은 최상위 클래스 Object의 자식 클래스이다. RuntimeExeption은 Checked Exeption과 Unchecked Exception을 구분하는 기준이다.
Checked Exeption | Unchecked Exeptoion | |
---|---|---|
처리여부 | 반드시 처리해야 함 | 처리를 강제하지 않음 |
확인 시점 | 컴파일 단계 | 실행 단계 |
예외 발생 시 트랜잭션 처리 | roll-back 하지 않음 | roll-back |
대표 예외 | Exeption의 상속 받는 하위 클래스 중 Runtime Exception을 제외 한 모든 예외 - IOException - SQLExeption | Runtime Exeption 하위 예외 - NullPoint Exception - IllegalArgument Exception - IndexOutOfBound Exception - System Exception |
Checked Exption과 Unchecked Exeption의 명확한 구분 기준은 '만드시 처리를 하냐 안하냐'이다.