CS/클린코드(cleancode)

7장. 오류 처리 - 자바스크립트 클린코드

rachel_13 2022. 11. 6. 12:57

예외를 사용하지 않을 경우 함수를 호출한 즉시 오류를 확인해야 하는 번거로움이 있다.

따라서, 오류가 발생하면 예외를 던지도록 코드를 짜는 것이 더 좋다.

그래야 논리와 오류 처리 코드가 섞이지 않는다.

 

Try - Catch - Finally

try 블록에서 무슨 일이 생기든이 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다.

예외가 발생하는 코드를 짤 때는 웬만하면 try-catch-finally문으로 작성하는 것이 좋다.

 

사용 예

try {
  nonExistentFunction();
} catch (error) {
  console.error(error);
  // expected output: ReferenceError: nonExistentFunction is not defined
  // Note - error messages will vary depending on browser
}

문법

try {
      try_statements
    }
    [catch (exception_var) {
      catch_statements
    }]
    [finally {
      finally_statements
    }]

 

미확인 에러를 사용하고, 예외에 의미를 제공한다.

확인된 오류를 던진다면, try catch구문의 catch 블록에서 throw를 던져야 한다.

계속해서 새로운 오류를 던지기 위해 throws 절을 추가하게 되면 캡슐화가 깨진다.

console.error를 사용해서 로깅을 남기고, 오류 메세지에 좀 더 명확한 의미를 담아서 전달한다.

const onSubmit = handleSubmit(async (data) => {
    try {
      await axios.post('api/user/login/', data);
      console.log(data);
    } catch (err) {
      console.error(err);
    }
  });

☕️ try/catch 를 썼다면, 그 감싼 코드에 어떤 에러가 발생한지 모른다는 뜻이다. 그러므로 그에 대한 장치를 해둬야 하는게 맞다.

따라서 promise 가 실패한 케이스는 그냥 두는 것보다는 적절한 에러 핸들링을 해주는 것이 더 좋다.

 

Null을 반환하지도, 전달하지도 말라

메서드에서 null을 반환하고자 하는 유혹이 든다면, 그 대신 예외를 던지거나 특수 사례 객체를 반환하는 것이 좋다.

대다수 프로그래밍 언어는 호출자가 실수로 넘기는 Null을 적절히 처리하는 방법이 없다.

'CS > 클린코드(cleancode)' 카테고리의 다른 글

9장. 단위테스트  (0) 2022.11.28
10장. 클래스 - 자바스크립트 클린코드  (0) 2022.11.20
6장. 객체와 자료구조  (0) 2022.11.06
5장. 형식 맞추기  (0) 2022.10.30
3장. 함수  (0) 2022.10.30