예전엔 이런 코드 많이 봤다. try { DoSomething(); } catch (Exception ex) { // 일단 잡고 보자 } 에러 나면 앱 죽으니까. 일단 막아두자는 심리.
나도 그랬다. 근데 어느 순간 깨달았다.
이건 예외 처리가 아니라 문제 미루기라는 걸. 예외는 숨기라고 있는 게 아니다 예외는 시스템이 보내는 신호다.
상태가 잘못됐거나 예상하지 못한 입력이 들어왔거나 의존성이 실패했거나 즉, 설계가 가정한 흐름이 깨졌다는 뜻이다. 그걸 catch (Exception)으로 전부 흡수해버리면 문제가 해결되는 게 아니다.
그냥 조용해질 뿐이다. 그리고 나중에 더 이상한 형태로 돌아온다.
책임 경계가 무너진다 예외 처리는 아무 데서나 하면 안 된다. “내가 이걸 책임질 수 있는가?”
가 기준이다. 예를 들어, Repository에서 난 DB 예외를 UI에서 그냥 잡아버린다?
그건 예외를 처리한 게 아니라 책임을 흐린 거다. 계층마다 역할이 있다.
인프라 → 기술적 예외 도메...
원문 링크 : try-catch를 무작정 감싸면 안 되는 이유