Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “我怎么能?”;扔;“内部”;捕获;由外部机构处理被拒绝承诺的方法;捕获;博克?_Javascript_Node.js_Error Handling_Try Catch_Throw - Fatal编程技术网

Javascript “我怎么能?”;扔;“内部”;捕获;由外部机构处理被拒绝承诺的方法;捕获;博克?

Javascript “我怎么能?”;扔;“内部”;捕获;由外部机构处理被拒绝承诺的方法;捕获;博克?,javascript,node.js,error-handling,try-catch,throw,Javascript,Node.js,Error Handling,Try Catch,Throw,这起作用了 函数拒绝承诺(){ 退回承诺。拒绝(“错误”); } 异步函数someFunction(){ 试一试{ 拒绝承诺 .catch((err)=>console.log(err));//它可以工作!错误记录在这里 } 捕捉(错误){ 控制台日志(err); } } someFunction()正如注释中指出的,如果您在异步函数中,则无需使用.catch()。我不知道您为什么想要嵌套的try…catch,但看起来这样可以实现您想要的: function rejectedPromise()

这起作用了

函数拒绝承诺(){
退回承诺。拒绝(“错误”);
}
异步函数someFunction(){
试一试{
拒绝承诺
.catch((err)=>console.log(err));//它可以工作!错误记录在这里
}
捕捉(错误){
控制台日志(err);
}
}

someFunction()
正如注释中指出的,如果您在
异步
函数中,则无需使用
.catch()
。我不知道您为什么想要嵌套的
try…catch
,但看起来这样可以实现您想要的:

function rejectedPromise() {
  return Promise.reject("ERROR");
}

async function someFunction() {
  try {
    try {
      await rejectedPromise()
    } 
    catch(err) {
      throw err;
    }
  }
  catch(err) {
    console.log(err);
  }
}

someFunction();

如果要使用
try/catch
,可能应该使用
wait
.catch()
是一个承诺API。如果承诺链真的会爆炸出错误,那么整个承诺链构造将是无用的。对。要么是
.catch
,它是“promise async exception handler”,要么是
try..wait..catch
,它是围绕前者的语法糖,使其看起来更同步。你不能同时使用这两种方法,我不知道。我真的以为我可以把它们混在一起。谢谢你们两位。好吧,如果可以的话,那么接下来会发生什么:
承诺。然后(a)。然后(b)。然后(c)。然后(d)。然后(e)
。如果,比如说,
b
抛出,那么您需要处理它。但是
c
d
也可以抛出。您必须在
try/catch
中包围整个链,并尝试找出如何恢复(并非微不足道),或者,用
try/catch
包围链中的每个链接,这是一个很大的噪音。如果你能从一个问题中恢复过来并想继续这个链条,那也不好。至于“为什么”:现在同步执行
.try..catch
代码,然后
/
.catch
发生在承诺解决后的某个时候。到那时,代码将在
try..catch
上下文之外很长。