Dr.Mlem 2024. 9. 8. 22:01

q.

try{

response = await axios.get(http://localhost:3001/student/${params.id});

console.log(response.data);

}catch(e){

console.error(e);

alert('id의 파라미터 가져오는데 말아먹음');

return;

}

 

저기서 catch(e) 대신 그냥 catch로 쓰면 안되는거야?

 

A.

네, 맞습니다. catch(e) 대신 catch만 사용하는 것은 기술적으로 가능합니다. 하지만, 에러 객체(e)에 접근하여 에러 정보를 활용할 수 없게 되므로 권장하지 않습니다.

catch 블록의 역할

  • catch 블록은 try 블록 내에서 발생한 예외(에러)를 처리하는 역할을 합니다.
  • catch 블록에는 예외 객체를 나타내는 매개변수를 지정할 수 있습니다. (일반적으로 e 또는 error를 사용)
  • 이 매개변수를 통해 예외 객체의 속성(예: message, name, stack)에 접근하여 에러 정보를 활용할 수 있습니다.

catch만 사용하는 경우

  • 예외 객체에 접근할 수 없으므로, 에러 정보를 활용한 구체적인 처리가 어렵습니다.
  • 단순히 에러 발생 사실만 알리고 싶을 때는 사용할 수 있지만, 대부분의 경우 에러 정보를 활용하여 사용자에게 더 유용한 정보를 제공하거나, 로그를 기록하는 등의 추가적인 처리가 필요합니다.

예시

JavaScript
try {
  // ... 에러 발생 가능 코드 ...
} catch (e) { // 예외 객체 e를 통해 에러 정보 활용
  console.error(e); // 에러 정보 콘솔에 출력
  alert(`에러 발생: ${e.message}`); // 사용자에게 에러 메시지 표시
  // 추가적인 에러 처리 로직 (예: 로그 기록, 특정 페이지로 이동 등)
}
코드를 사용할 때는 주의가 필요합니다.
 

결론

  • catch 블록에 예외 객체 매개변수를 지정하는 것은 에러 정보를 활용하여 적절한 처리를 수행하기 위한 중요한 방법입니다.
  • catch만 사용하는 것은 가능하지만, 에러 정보를 활용할 수 없으므로 권장하지 않습니다.
  • 예외 객체를 활용하여 에러 메시지 표시, 로그 기록, 사용자에게 안내 메시지 제공 등 다양한 에러 처리 로직을 구현할 수 있습니다.

따라서, catch(e)와 같이 예외 객체 매개변수를 지정하여 에러 정보를 활용하는 것이 좋습니다.