抛出错误并从Javascript函数返回值的最简洁方法是什么?
以下是一种提出的方法作为起点:
(e, v) => {
setTimeout(() => { throw(e) }, 0);
return v;
}
这是一个可以进一步演示的可运行代码段:
var val = ((e, v) => {
setTimeout(() => { throw(e) }, 0); // will throw in console
return v;
})('errMSG', 1)
alert(val); // 1
答案 0 :(得分:1)
返回包含您感兴趣的值的对象,并输入错误:
return {
value: "foo",
error: new Error("bar")
}
然后接收器可以根据需要抛出错误
答案 1 :(得分:0)
你不能两者都做。抛出错误会将控制转移到catch
语句(此时不再抛出),或者缺少catch
,将终止程序的执行。
更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/throw
答案 2 :(得分:0)
引发错误时,抛出线下面的代码不会执行。
因此,抛出错误后不可能立即返回值。但是,您可以将值与错误一起发送,并在以后捕获它。
所以,我假设您要抛出一个带有错误的值...这是执行此操作的方法...
希望这会有所帮助
function UserException(message) {
this.message = message;
this.name = 'UserException';
}
// Make the exception convert to a pretty string when used as a string
// (e.g., by the error console)
UserException.prototype.toString = function() {
return `${this.name}: "${this.message}"`;
}
let v = 1010 //
let val = ((e, v) => {
setTimeout(() => {
console.log("value from error"+" :"+e.message,",variable v"+" :"+v);
throw(e);
}, 0); // will throw in console
})(new UserException(v), v) //