你怎么能抛出一个错误并从Javascript函数返回一个值

时间:2018-02-12 19:03:47

标签: javascript

抛出错误并从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 

3 个答案:

答案 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) //