20201014(42Sof Error Class)
10673 ワード
1.学習時間全体
午前9時30分から午後4時まで(食事時間も含む)
2.学習目標
42StackOverFLow
3.学習方法
夏仁浩とディスコ
4.次の学習目標
5.学習内容の詳細
コード冗長性を最小化するためのエラークラスの作成
作成
class HttpException extends Error {
status: number;
message: string;
constructor(status: number, message: string) {
super(message);
this.status = status;
this.message = message;
}
}
export default HttpException;
import { NextFunction, Request, Response } from 'express';
import HttpException from '../exceptions/HttpException';
function errorMiddleware(error: HttpException, request: Request, response: Response, next: NextFunction) {
const status = error.status || 500;
const message = error.message || 'Something went wrong';
response
.status(status)
.send({
status,
message,
})
}
export default errorMiddleware;
なぜerrorMiddlewareを最下層に配置したのか
Expressは、すべてのミドルウェア関数およびルーティングが実行されたが、いずれにも応答していないことを示すため、
~~
app.use(cors(corsOptions));
app.use("/auth", authRouter);
app.use("/posts", postRouter);
app.use("/users", userRouter);
app.use("/pages", pageRouter);
app.use(errorMiddleware);
~~
const createAnswerLike = async (req: DecodedRequest, res: Response, next: NextFunction) => {
const { answerId, isLike, answerUserId } = req.body;
const userId: number = req.decodedId;
const likeService: LikeService = new LikeService();
try {
await likeService.createAnswerLike({ userId, answerId, isLike, answerUserId });
return res.status(200).json({
result: true,
message: "create Success",
})
} catch (error) {
console.log(error);
next(new HttpException(404, 'Answer not found'));
}
}
https://wanago.io/2018/12/17/typescript-express-error-handling-validation/Reference
この問題について(20201014(42Sof Error Class)), 我々は、より多くの情報をここで見つけました https://velog.io/@earthkingman/학습일지20201012Error-Classテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol