如何构建一个Error对象而不是给它一个字符串? https://codesandbox.io/s/pwr973487x
async function getUrl() {
try {
const res = await axios.get('https://httpstat.us/500')
} catch(e) {
const errorObj = {
status: 500,
message: 'Internal server error, something is not defined etc'
}
throw new Error('err') //how to build object?
}
}
我希望throw Error()
返回errorObj
。我是否必须自己创建类或者我可以修改现有的Error类?我需要它,所以它标准化我的不同Apis集的错误信息。
答案 0 :(得分:1)
您可以使用catch
返回的错误对象 try {
const res = await axios.get('https://httpstat.us/500')
} catch(e) {
e.message = 'Internal server error, something is not defined etc';
throw e;
}
答案 1 :(得分:0)
您只需在Error对象中添加一个字段,例如
var err = new Error('Internal Server error');
err.customField = { someProperty: 'some value'};
console.log(err);
然后你可以正常抛出它:
throw err;
当您发现错误时(调用堆栈中的较高位置),您可以拉出自定义字段:
try
{
throw err;
}
catch (e)
{
console.error(e);
console.log(e.customField);
}
使用ES6以后,您还可以创建自己的错误类:
class MyError extends Error {
constructor(message, customValue) {
super(message);
this.field = customValue;
}
get customField() {
return this.field;
}
set customField(obj) {
this.field = obj;
}
};
var ex = new MyError('Error message', {someProperty: 'some value'});
console.dir(ex);
console.log('My custom error details: ', ex.customField);