코드를 작성하다 보면 에러들을 많이 만나게 되는데요. 메모리부족이나 스택오버플로우 심각한 에러가 있는 반면에 수습 할 수 있는 심각도가 낮은 에러도 존재합니다. 이때 우리는 심각도가 낮은 에러를 예외 처리를 통해서 동작하지 않는 상황을 막을 수 있는데요. 지금부터 예외 처리를 어떻게 하는지 알아볼까 합니다.
기본적으로 예외처리를 어떻게 하는건지 얘기를 해봅시다.
app.delete("/youtubers/:id", (req, res) => {
let id = req.params.id;
id = parseInt(id);
const name = db.get(id).chennelTitle;
db.delete(id);
res.json({
message: `${name}님, 그동안 이용해 주셔서 감사했습니다.`
});
});
위 코드를 보면 localhost/youtubers/:id에 delete 요청을 했을 때 params로 id값을 받아오고 그 값으로 채널명을 받아온 뒤 db에서 key값으로 id와 일치한 데이터를 삭제를 해주고 응답을 통해서 메시지를 보낸다는 코드입니다.
Q. 없는 id값이면 어떻게 하나요?
A. 조건문을 걸어서 db에 id를 key값으로 갖고 있는 값이 있는지 확인해볼 수 있습니다.
코드에서 예외적으로 존재하는 상황을 미리 그려보는 겁니다. 만약에 데이터가 없다면? 결과가 없다면? 없을 때의 상황도 코드를 읽고 확인을 한 다음에 적절한 위치에 조건을 걸어 예외 처리를 하는 것입니다. 이렇게만 해도 에러발생을 막을 수가 있습니다. 위 코드의 예외처리 코드를 작성해 보겠습니다.
app.delete("/youtubers/:id", (req, res) => {
let id = req.params.id;
id = parseInt(id);
if (!db.has(id)) {
res.json({
message: `존재하지 않는 유투버입니다.`
});
return;
}
const name = db.get(id).chennelTitle;
db.delete(id);
res.json({
message: `${name}님, 그동안 이용해 주셔서 감사했습니다.`
});
});
보다시피 조건문은 id 값과 name 사이에 위치하는데요 그 이유는 name도 db에 존재해야 가져올 수 있는 것이기 때문에 조건문은 name보다 위에 조건절에는 id값이 필요하기 때문에 id보다 아래에 위치하는 것입니다.
'프로그래밍📚 > javascript' 카테고리의 다른 글
{} 빈 객체 확인하는 방법 (0) | 2023.12.14 |
---|---|
Array.find (0) | 2023.12.13 |
forEach와 map 함수 (0) | 2023.12.12 |
자바스크립트 함수의 형태 (0) | 2023.12.08 |
객체에 접근하여 값을 변경하기 - 속성접근자 (0) | 2023.12.08 |