javascript - 如何判断代码是否在 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;
}
解决方案
不,无法检测到抛出的错误将被捕获,您的代码无法获得该信息。(并且可以说,所有错误都被捕获,即使它们被 Node 自己的错误处理程序捕获,该错误处理程序将它们转储到控制台并终止进程...... :-))
推荐阅读
- ruby - 截取字符串的最后一个字符
- tensorflow - Tensorflow:tf.contrib.slim 和 tf.layers 之间的区别
- asterisk - 如何使用 MixMonitor 为每个录制的通话自动创建一个新的 wav 文件?
- java - 将元素添加到 Hibernate 的 PersistentSet 时出现 ArrayIndexOutOfBoundsException
- ionic-framework - 显示取消按钮,直到 ion-searchbar 具有值
- asp.net-core-2.0 - 在 .NET Core 2 WebAPI 应用程序中,dbcontext 的范围和生命周期是什么
- android - 如何修复运行时异常无法启动 Activity
- c# - ASP.Net Core 视图的 CLSCompliant 属性
- java - 如何从网络中获取价值并将其转换为整数
- java - Google App Engine 上 Spring Boot 应用程序的 Maven 配置文件