错误处理

错误处理也是一门学问。

错误分类

/src/utils/http-code.ts

/**
* http 状态码
*/
export enum HTTPCode {
/**
* 请求参数错误
*/
badRequest = 400,
/**
* 路由没有找到
*/
pathNotFound = 404,
/**
* 资源没有找到
*/
resourceNotFound = 40400,
/**
* server understands the content type of the request entity
* 请求的语义错误
*/
unprocessableEntity = 422,
/**
* 校验参数错误
*/
notAuthenticated = 401,
/**
* 没有权限访问
*/
forbidden = 403,
/**
* 资源冲突
*/
conflict = 409,
/**
* 请求频繁
*/
tooManyRequest = 429,
/**
* 当前请求失败 Failed Dependency
*/
failedDependency = 424,
/**
* 请重试
*/
retryWith = 449,
/**
* 内部服务器未知错误
*/
internalServer = 500,
}
/**
* 自定义带状态码的错误信息
*/
export class Err extends Error {
constructor(message: any, statusCode: HTTPCode) {
super(message);
if (message instanceof Error) {
this.message = message.message;
this.stack = message.stack;
}
this.statusCode = statusCode;
}
public statusCode: HTTPCode;
}

使用例子

import { HttpCode, Err } from "/src/utils/http-code";
import { i18n } from "/src/i18n";
throw new Err(i18n.t("40400"), HttpCode.resourceNotFound);

参考 打印日志