Spaces:
Paused
Paused
| import assert from 'assert'; | |
| import _ from 'lodash'; | |
| export default class Exception extends Error { | |
| /** 错误码 */ | |
| errcode: number; | |
| /** 错误消息 */ | |
| errmsg: string; | |
| /** 数据 */ | |
| data: any; | |
| /** HTTP状态码 */ | |
| httpStatusCode: number; | |
| /** | |
| * 构造异常 | |
| * | |
| * @param exception 异常 | |
| * @param _errmsg 异常消息 | |
| */ | |
| constructor(exception: (string | number)[], _errmsg?: string) { | |
| assert(_.isArray(exception), 'Exception must be Array'); | |
| const [errcode, errmsg] = exception as [number, string]; | |
| assert(_.isFinite(errcode), 'Exception errcode invalid'); | |
| assert(_.isString(errmsg), 'Exception errmsg invalid'); | |
| super(_errmsg || errmsg); | |
| this.errcode = errcode; | |
| this.errmsg = _errmsg || errmsg; | |
| } | |
| compare(exception: (string | number)[]) { | |
| const [errcode] = exception as [number, string]; | |
| return this.errcode == errcode; | |
| } | |
| setHTTPStatusCode(value: number) { | |
| this.httpStatusCode = value; | |
| return this; | |
| } | |
| setData(value: any) { | |
| this.data = _.defaultTo(value, null); | |
| return this; | |
| } | |
| } |