有没有办法知道某些代码是否在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;
}

最佳答案

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

关于javascript - 如何判断代码是否在try catch块下,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51772702/

10-09 01:11