首页 > 解决方案 > 如何判断代码是否在 try catch 块下

问题描述

有没有办法知道某些代码是否在 try catch 块下?(特别是在节点中)

我想做的是这样的(使用变量bungleInTry来模拟我正在寻找的东西)

let acumulateErrors=[];
let bungleInTry=0;      // This to be removed, it's to simulate the expected behavior

function assert(cond,msg){
  if (!cond){  
    if (underTryCatch())
        throw(Error(msg));   // Somewhere somebody is in control
    else
        acumulateErrors.push(msg);  // I don't want a crash but I have to keep this
  }
}
    
assert(1==2, "1 doesn't equals 2"); 

bungleInTry++;  // (simulating what I am asking)
try{
  assert(3==4, "3 doesn't equals 4");

}catch(error){
  console.log(error.message);
}
bungleInTry--;  // to be removed


console.log(acumulateErrors);

function underTryCatch(){
  return bungleInTry;
}

标签: javascripterror-handling

解决方案


不,无法检测到抛出的错误将被捕获,您的代码无法获得该信息。(并且可以说,所有错误都被捕获,即使它们被 Node 自己的错误处理程序捕获,该错误处理程序将它们转储到控制台并终止进程...... :-))


推荐阅读