在 js 脚本中报错的方法
使用 JS 标准的 Error 对象
js
function testException() {
throw new Error('hello');
}
报错结果:
json
{
"code": 500,
"message": "amis.curd.curdTemplate Error: 模型:书本不存在\n at getModelDefinition (scripts/amis/lib.js:22:17)\n at getFilterFormFields (scripts/amis/lib.js:272:23)\n at curdTemplate (scripts/amis/curd.js:16:20)"
}
对象 Exception
使用 Yao 特定的对象 Exception,会被 Yao 框架捕获。只有一个参数时,异常代码会设置成 500。
js
function testException() {
throw new Exception('hello');
}
可以在第二个参数指定异常代码。
js
function testException() {
throw new Exception('hello', 403);
}
转换成错误对象
json
{ "code": 500, "message": "模型:书本不存在" }
区别:
使用 Exception 得到的异常信息会更友好,在 api 接口调用中信息显示更友好。
使用 Error 会得到更具体的 js 堆栈信息,开发时会更好。
在开发代码时可以先把 Exception 设置成 Error,最后再注释掉。
js
let Exception = Error;
throw new Exception(`模型:${modelName}不存在`);
异常测试:
js
var test = () => {
var res = 1;
try {
throw new Exception('hello', 404);
} catch (e) {
res = {
isError: e instanceof Error,
message: e.message, //一定要使用e.message获取错误文本
code: e.code, //404
name: e.name, //name的格式是:Exception|<code>
};
}
return res;
};
test();