作用
统一所有用户级的错误信息,能被客户端轻松的使用。
防止代码中使用魔数
这些错误对象满足 new ApiError instanceof Error
自动生成
通过解析 include/ErrorMessageDefine.json 文件,能自动生成错误对象。
这个json文件需要定义一个数组,其每一项都是一个错误码定义,符合以下结构:
[错误码, 错误的名称, 错误提示信息]
其中错误码可以省略,将自动生成不重复的错误码。错误码不能小于0,也不能重复。
错误的名称必须以 E_
开头,允许大写英文字母、数字、下划线。
系统内部存在内置错误码。包括E_SUCCESS,它的错误码总是等于0。
以及其他内部错误,这些错误码总是小于0。
所有这些错误都能通过 ApiError.E_NAME 访问
API
构造函数(String message, String name, String code)
分别对应提示信息、名称、错误码
创建错误不会将它注册到 ApiError.E_NAME
toJSON()
返回一个JS对象,它包含当前 ApiError
的全部信息
toStrongJSON()
返回一个JS对象,它除了 toJSON
外,还会去掉所有循环引用
stringify()
返回一个字符串,它是 toStrongJSON
的字符串版本
response(Response rsp)
将当前错误对象以json的形式返回给客户端,rsp
是 express
的
response
对象
data(Any data)
根据当前对象复制并返回新的错误对象,并在新的对象中添加数据 data
,toJSON
时,会增加一个
data
属性。
attach(Object data)
根据当前对象复制并返回新的错误对象,同时附加数据 data
,toJSON
时,会将
data
扩展到结果数据中。
例如可以用 ApiError.E_SUCCESS.attach({ message: "重复操作" })
来覆盖默认的 “操作成功”提示
切勿覆盖 code 属性,将导致简单的问题变得非常难以捕捉。
is(ApiError object)
判断两个错误是否相等,依据是 code
是否相等,如果
object
不是一个ApiError
,则返回
false