자바스크립트 공부 일지 16

에러핸들링 정리

시작

이번에는 Sequelize를 이용해 회원가입, 로그인, 게시판, 댓글 API를 구현해보도록 하자.

에러핸들링

현주님 코드

js
//게시글 삭제하기
router.delete("/:postId", authmiddleware, async (req, res) => {
    try {
        const { postId } = req.params;
        const { userId } = res.locals.user;
        const existsPosts = await Posts.findOne({ postId });
        if (existsPosts === null) {
            const error = new Error("게시글이 존재하지 않습니다.");
            error.expect = true;
            error.status = 412
            throw error;

        } else if (userId !== existsPosts.userId) {
            const error = new Error("게시글 삭제의 권한이 존재하지 않습니다.");
            error.expect = true;
            error.status = 412
            throw error;
        }
        try {
            await Posts.deleteOne({ postId });
        } catch {
            const error = new Error("게시글이 정상적으로 삭제되지 않았습니다");
            error.expect = true;
            error.status = 401
            throw error;
        }
        return res.status(200).json({ massage: "게시글을 삭제하였습니다." })

    } catch (err) {
        return res.status(err.status || 400).json({ errorMessage: err.expect ? err.message : "게시물 삭제를 실패했습니다." });
    }

})

클래스 만들기.

js
module.exports = class CustomError extends Error{
constructor (message, status, expect) { 0개의 사용 위치
  super();
  this.message = message;
  this.status = status;
  this.expect = expect;
}
js
const CustomError = require('./test' );

console.log(new CustomError ( message: '비밀번호가 틀렸습니다.', status: 400, expect: true));

500에러는 최종격.