-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
40 lines (38 loc) · 1.39 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// 异常统一处理器: 捕获业务代码抛出的异常,用户也可自己手动捕获异常,手动捕获后将不会被该处理器处理.
module.exports = function (locale) {
return async (ctx,next) => {
let _locale = locale || 'EN';
let msg;
let code = 500;
try {
await next();
} catch (e) {
console.error('---> Global Exception Handler: \x1b[31m%s\x1b[0m => %s\n%s', e.name, e.message, e.stack);
msg = e.message;
if (e.name == "token_error") {
code = 302;
} else if (e.name == "access_denied") {
code = 403;
} else if (["login_error", "checkcode_error", "Error"].indexOf(e.name) > -1) {
// Do nothing. Just output origin message.
} else {
// internationalization
switch (_locale) {
case 'CN':
msg = "操作失败,系统异常!";
break;
case 'EN':
msg = "Oops, system is busy now!";
break;
default:
msg = "Oops, system is busy now!";
break;
}
}
} finally {
if (msg) {
ctx.body = { code: code, msg: msg };
}
}
}
}