2017-04-08 323 views
3

我该怎么办switch语句返回基于HTTP状态代码的错误信息,我这样做:开关HTTP状态代码

switch(true){ 
    case err.status.test(/^4/): // 4xx 
     res.fail(err.status, err); 
     break; 
    case err.status.test(/^5/): // 5xx 
     res.error(err.status, err.message, {data: err}); 
     break; 

是我的正则表达式这样做对吗?

回答

5

test()RegExp方法,所以它应该是:

case /^4/.test(err.status): 

我个人认为switch(true) { ... }是一个令人困惑的编码风格。我将它写成:

switch(Math.floor(err.status/100)) { 
    case 4: 
     res.fail(err.status, err); 
     break; 
    case 5: 
     res.error(err.status, err.message, {data: err}); 
     break; 
} 
+1

我知道关键字'break'在你的“...”中,但我认为可能会混淆不明确。 – Ankirama

-1

一个也可以尝试做了错误的对象,其中键将状态码和值将是各自的错误/成功的消息。例如

errorObj = {1 : 'Informational responses', 2: 'Success', ...} 
console.log(errorObj[Math.floor(err.status/100)]) 

它在大多数时间用于较少行数的目的。