@eggjs/错误
错误用于 鸡蛋.js
@eggjs/errors 提供两种错误,即错误和例外.
- 例外是系统错误, egg 将登录出错并丢出例外, 但会被 orrror 插件捕获 .
- 错误是商业错误,蛋会将其转化为响应.
安装
$ npm i @eggjs/errors --save
使用量
创建错误
const { EggError, EggException } = require('@eggjs/errors');
let err = new EggError('egg error');
console.log(EggError.getType(err)); // ERROR
创建例外
err = new EggException('egg exception');
console.log(EggException.getType(err)); // EXCEPTION
从普通错误对象导入错误
err = new Error('normal error');
console.log(EggError.getType(err)); // BUILTIN
err = EggError.from(err);
console.log(EggError.getType(err)); // ERROR
自定义出错
错误可以扩展 .
const { EggBaseError } = require('@eggjs/errors');
class CustomError extends EggBaseError {
constructor(message) {
super({ message, code: 'CUSTOM_CODE' });
}
}
或者使用打字符,您可以自定义错误选项.
import { EggBaseError, ErrorOptions } from '@eggjs/errors';
class CustomErrorOptions extends ErrorOptions {
public data: object;
}
class CustomError extends EggBaseError<CustomErrorOptions> {
public data: object;
protected options: CustomErrorOptions;
constructor(options?: CustomErrorOptions) {
super(options);
this.data = this.options.data;
}
}
推荐使用消息而不是用户土地上的选项, 以方便开发者理解, 参见 http 错误。 。 。 .
HTTP 错误
HTTP出错是将400~500状态代码转换为出错对象的BUILTIN出错. HttpError 扩展 EggBaseError 提供两个属性,即 status 财务报告和审定财务报表 headers· ;
const { ForbiddenError } = require('@eggjs/errors');
const err = new ForbiddenError('your request is forbidden');
console.log(err.status); // 403
支持短名:
const { E403 } = require('@eggjs/errors');
const err = new E403('your request is forbidden');
console.log(err.status); // 403
框架库错误
FrameworldBaseError是供鸡蛋框架/插件开发者抛出框架错误. 它可以通过 FrameworFormater 格式化
框架BaseError 扩展 EggBaseError 提供了三种属性,即 module, (中文)serialNumber 财务报告和审定财务报表 errorContext
框架BaseError 无法直接使用, 框架/ 插件应该像这样延伸
const { FrameworkBaseError } = require('@eggjs/errors');
class EggMysqlError extends FrameworkBaseError {
// module should be implement
get module() {
return 'EGG_MYSQL';
}
}
const err = new EggMysqlError('error message', '01', { traceId: 'xxx' });
console.log(err.module); // EGG_MYSQL
console.log(err.serialNumber); // 01
console.log(err.code); // EGG_MYSQL_01
console.log(err.errorContext); // { traceId: 'xxx' }
使用格式创建框架Error
使用静态方法 .create(message: string, serialNumber: string | number, errorContext?: any) 用于新建框架错误和格式
const { FrameworkBaseError } = require('@eggjs/errors');
class EggMysqlError extends FrameworkBaseError {
// module should be implement
get module() {
return 'EGG_MYSQL';
}
}
const err = EggMysqlError.create('error message', '01', { traceId: 'xxx' });
console.log(err.message);
// =>
framework.EggMysqlError: error message [ https://eggjs.org/faq/EGG_MYSQL/01 ]
框架错误格式
FrammeErrorFormater 将在错误消息中附加 faq 向导 URL 。 当开发者遇到框架错误时, 这将有所帮助
faq 引导 url 格式 : ${faqPrefix}/${err.module}/${err.serialNumber}, (中文(简体) ), faqPrefix 实值 https://eggjs.org/faq 默认。 可以通过设置扩展或覆盖 process.env.EGG_FRAMEWORK_ERR_FAQ_PREFIX (建议)或,对于后向相容性, process.env.EGG_FRAMEWORK_ERR_FAQ_PERFIX (传入.
const { FrameworkErrorFormater } = require('@eggjs/errors');
class CustomErrorFormatter extends FrameworkErrorFormater {
static faqPrefix = 'http://www.custom.com/faq';
}
格式( err)
格式错误到信件, 它不会影响来源错误
const { FrameworkBaseError, FrameworkErrorFormater } = require('@eggjs/errors');
class EggMysqlError extends FrameworkBaseError {
// module should be implement
get module() {
return 'EGG_MYSQL';
}
}
const message = FrameworkErrorFormater.format(new EggMysqlError('error message', '01'));
console.log(message);
// => message format like this
framework.EggMysqlError: error message [ https://eggjs.org/faq/EGG_MYSQL/01 ]
...stack
...
code: "EGG_MYSQL_01"
serialNumber: "01"
errorContext:
pid: 66568
hostname: xxx
// extends
class CustomErrorFormatter extends FrameworkErrorFormater {
static faqPrefix = 'http://www.custom.com/faq';
}
const message = CustomErrorFormatter.format(new EggMysqlError('error message', '01'));
console.log(message);
// =>
framework.EggMysqlError: error message [ http://www.custom.com/faq/EGG_MYSQL/01 ]
...
格式错误( err)
将 faq 引导 url 附加到错误的. message
const { FrameworkBaseError, FrameworkErrorFormater } = require('@eggjs/errors');
class EggMysqlError extends FrameworkBaseError {
// module should be implement
get module() {
return 'EGG_MYSQL';
}
}
const err = FrameworkErrorFormater.formatError(new EggMysqlError('error message', '01'));
console.log(err.message); // error message [ https://eggjs.org/faq/EGG_MYSQL/01 ]
可用错误
BaseError
|- EggBaseError
| |- EggError
| |- HttpError
| | |- NotFoundError, alias to E404
| | `- ...
| |- FrameworkBaseError
| `- CustomError
`- EggBaseException
|- EggException
`- CustomException
问题和建议
请打开一个问题 这里。 。 。 .
许可证
贡献者
制造的 贡献者-img。 。 。 .