Короче вот готовый код
class ApiError extends Error {
status: number;
message: string;
constructor(status: number, message: string) {
super();
this.status = status;
this.message = message;
}
static badRequest(message: string) {
return new ApiError(404, message);
}
static internal(message: string) {
return new ApiError(500, message);
}
static forbidden(message: string) {
return new ApiError(403, message);
}
}
export default ApiError;
А вот обработчик :
/* eslint-disable @typescript-eslint/no-unused-vars */
import { Request, Response, NextFunction } from 'express';
import ApiError from '../errors/ApiError';
const errorHandler = function (
err: ApiError,
req: Request,
res: Response,
next: NextFunction,
): Response {
if (err instanceof ApiError) {
return res.status(err.status).json({ message: err.message });
}
return res.status(500).json({ message: 'Непредвиденная ошибка!' });
};
export default errorHandler;