错误处理
错误处理也是一门学问。
错误分类
/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);
参考 打印日志