언어 및 도구들 공부/Javascript
catch(e) vs catch
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)와 같이 예외 객체 매개변수를 지정하여 에러 정보를 활용하는 것이 좋습니다.