我一直在努力处理 durandal 的错误。
我发现将用于渲染视图等的大部分逻辑放置在激活函数中是可取的。
这一直很好,直到我注意到一些编程错误导致整个应用程序非常安静地崩溃。即没有写入控制台,没有捕获错误,应用程序只是挂在激活功能上。
这是预期的行为。我应该将我的应用程序的应用程序逻辑移动到其他地方吗?
实际的代码有点尴尬,很多都包含在 jquery 承诺等中。
为了证明我所看到的,我写了以下内容:
public activate(stationId: string): void {
throw "Error in detail activate";
}
除了挂起应用程序之外,它没有向控制台写入任何内容,也没有引发其他明显的错误。
立即发生的事情:
public activate(stationId: string): void {
setTimeout(function() {
throw "Error in detail activate";
}, 0);
}
在这种情况下,激活功能会继续进行,但不幸的是也无法跟踪此错误?
我担心我需要找到一种在激活点执行应用程序逻辑的方法,但如果不简单地吞下这些错误,那将很有用。
进行了更多调查并深入研究了Durandal。
错误仍然消失。尽管 Durandal 明显尝试记录错误。我一直在寻找 activator.js 激活功能:
try {
result = invoke(newItem, 'activate', activationData);
} catch (error) {
system.error(error);
callback(false);
return;
}
本质上,运行捕获条件并调用系统错误。结果似乎消失在淘汰赛绑定等中。无论如何,有没有让这个错误更明显。现在我坚持在 activator.js 激活函数上放置一个断点。
我正在使用 v2.0.1 的 durandal。