- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我希望浏览器在发生类型错误时显示错误消息。
错误如无法读取未定义的属性或 undefined reference 。
new Promise(function(resolve,reject){
// do stuff ...
reject('something logical is wrong');
}).catch(e => console.error(e));
new Promise(function(resolve,reject){
// do stuff, and a syntax error :/
var a = { };
a.something.otherthing = 1; /* we have an error here */
// ...
}).catch(e => console.error(e));
在第一个示例中,错误是逻辑错误,可以在 catch(..) block 中捕获它。
但在第二个例子中,这是一个明显的开发错误,在开发新东西时经常发生。我不想捕捉到它,我希望浏览器像控制台中的其他错误一样向我显示错误。我希望能够打开 chrome 异常时暂停 并查看其他变量的状态。我想在控制台中查看堆栈跟踪。
我希望它表现得像一个正常错误。
有什么想法吗?
最佳答案
与同步代码中的异常不同,一旦代码返回到idle,它就会变得未捕获,浏览器通常不知道 promise 链的逻辑结束,这是一个异步错误可以被认为未被捕获的地方。链毕竟是动态组装的,因此最好用最终的 .catch
终止。在链的逻辑端,即空闲的异步等价物。
有一个决赛.catch(e => console.error(e))
对我来说似乎很合理,但你是对的,浏览器倾向于以不同于未捕获异常的方式显示这些错误。如果你想让它们看起来一样,你可以使用这个技巧:
.catch(e => setTimeout(() => { throw e; }))
这将抛出 e
,包含原始堆栈跟踪和行号,在下一个循环中,在 promise 链之外,没有任何东西会捕获它,它将被报告为未捕获。我们使用 setTimeout
克服 .catch
的默认行为这是为了在您打算继续链接时捕获链中的任何异常。
有了这个,我希望你明白“逻辑”错误和其他错误之间的任何区别都是无关紧要的。任何到达链尾的错误对链来说都是致命的,即未捕获(当然,您可以从最终捕获中的其他错误中“逻辑”分类,并根据需要以不同方式显示它们。 )
关于javascript - es6 promise swallow 类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33376308/
在我的主应用程序表单中,我有许多菜单和工具栏按钮功能,我为其分配了快捷键,例如 F10、F11 和 F12。除了某些控件具有焦点的情况(例如第 3 方网格控件)外,快捷方式效果很好。在那种情况下,F1
我的项目将 C++ 与 Python 集成的解决方案推迟到现在。但是现在这个问题又被提出来了。有人知道项目的状态吗?在 Google 上:(http://code.google.com/p/unlad
我想要实现的是,在表单更改时,整个 View 应该重新渲染。这是为了提供刚刚编辑的数据的预览,并在勾选复选框时隐藏表单中的某些元素。 当用户编辑字段并单击按钮而不离开字段时,会同时触发前两个事件:更改
我知道没有任何官方的,但我希望我能从某个地方得到一个非官方的? 我在 x86 硬件 (Core 2 Duo) 上运行 32 位 Windows XP。 最佳答案 目前,没有正式的 Windows 二进
我希望浏览器在发生类型错误时显示错误消息。 错误如无法读取未定义的属性或 undefined reference 。 new Promise(function(resolve,reject){
我正在使用nodejs创建一个代理服务器。除非需要 CSRF token ,否则它可以正常工作。 使用请求插件 ( https://github.com/request/request ) 发出请求时
这是我几天来一直在努力解决的一个非常奇怪的问题。起初我以为它与我们的应用程序中的某些东西有关,但我已经将它剥离到最简单的 html 页面并且它仍在发生。基本上任何时候我在页面上添加一个标签 html
我有一个正在转发接收消息的对象。它不使用 forwardInvocation 实现将它们转发给其他对象。但是,由于程序的组织方式,methodSignatureForSelector 在某些时候并不总
我有一个正在转发接收消息的对象。它不使用 forwardInvocation 实现将它们转发给其他对象。但是,由于程序的组织方式,methodSignatureForSelector 在某些时候并不总
我在另一个 View 之上有一个 View 。单击底部 View 应该会触发回调。单击顶部 View 时不应触发任何回调。 我面临的问题是,当点击顶部 View 时,底部 View 会触发其回调。我想
我使用 RxJava 遍历文件列表,进行网络调用以上传每个文件,然后收集列表中成功上传的文件,并在成功时将这些文件保存在订阅者中。 此代码有效,但发生错误时除外。行为应该是它记录错误并继续,它确实如此
遇到了意外的 bash/sh 行为,我想知道有人可以解释其背后的基本原理,并提供以下问题的解决方案。 在交互式 bash shell session 中,我执行: $ bash -c 'sleep 1
看看这个例子: import java.io.FileDescriptor; import java.io.FileOutputStream; import java.io.IOException;
我正在研究 Objective-C 的“消息转发”。我编写了一个测试程序来验证我是否可以在运行时“吞下”一个无法识别的选择器。所以我这样做了: - (void) forwardInvocation:
自 2009 年第 4 季度发布以来,Google 似乎没有更新过结果部分。我一直想知道什么时候将它放入 Python 主干,以及它是否以任何方式准备好生产。 此外,“我们渴望不做任何原创作品”也在
例如,我想把中间的元素放到最后: let students=[ {"name":"a","uid":"001"}, {"name":"b","uid":"002"}, {"na
我在 UISCrollView 控件(使用 Xamarin.iOS 单绑定(bind)的 Google Maps iOS SDK)中嵌入的 View 上有一个 Google MapView 控件。 问
TLDR;问题: 当我使用 Runtime.exec() 单独运行我的原生 Android 可执行文件时, 我可以得到它的 printf()我的应用程序的输出。但是当我用 Runtime.exec("
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我是一名优秀的程序员,十分优秀!