TIL

면접도 보고 하다가, 문득 깨달은점. 내가 생각보다 기초가 되게 약하구나…

그래서 시작한 CS공부

https://www.youtube.com/watch?v=91ZOjxQzm_4

  • 주니어, 초보 개발자들이 모든 함수, 기능을 try-catch안에 넣고있다.
  • 당장 서버가 터지지 않기위한 방편인 셈.

그러나 이건 무엇이 잘못될지 모르니 일단 잡고보겠다는 뜻이다. 문제는 이런 코드가 에러를 조용히 삼키는 것이다. 문제가 숨어있다가 로그나 알림도 없이 운영단계에서 고객 불만 이후에 감지된다.

그래서. “예외를 던지기 전에 구분해라” 정말 예외인 상황과, 예상 가능한 상황. DB연결 끊김. 서버 메모리 OOM, 서드파티 API 호출의 타임아웃.

이런 경우엔 분명히 try-catch가 필요하고, 적절한 로깅과 시스템 알림이 갖춰져야 한다.

후자는 비즈니스 로직에 가깝다. 사용자를 찾지 못한 경우, 주문이 이미 발송된 경우…

이런 정상적인 흐름 안에서 예외 던지는것은 바람직하지 않다.

  • 예외를 줄이는 2가지 원칙

1. Result 객체 활용하기

성공과 실패를 담은 result 객체. 작업 결과를 APP의 흐름을 깨지 않고 전달 가능하다. 호출하는 쪽도 반환값만 보고 다음 처리를 결정 가능하다.

예상 가능하고, 시스템 자체 버그가 아니므로, 예외가 아니라 결과를 명시적으로 반환.

2. 먼저 검증하고 catch에 기대지 않는다.

잘못된 입력을 catch로 수습하지 않고, 함수 초반에 데이터를 미리 검증. 입력값 때문에 에러가 발생했다면, 예외처리 문제가 아니라 검증의 문제다. 에러를 올바르게 분류하라.

results matching ""

    No results matching ""