Welcome to the website navigation,本站只接受合法正规的企业网站,欢迎站长们提交你的网站获得展示和流量有任何问题请联系站长,欢迎大家加入本站。

                
提交网站
  • 网站:76083
  • 待审:5
  • APP:577
  • 文章:304416
  • 会员:56004
文字内链包年1000元 文字内链包年1000元 文字内链包年1000元 AI办公网站 AI绘画工具 AIchat

名站网址导航名站网址导航小编为爱好网页hTML5的朋友提供关于网页hTML5的相关知识。

  • 本篇文章的具体介绍如下

  在IE10中已经新加入了Error.stack 的支持,可以加快开发建设人员的脚本调试,并更正错误。尤其是一些难以重现的错误,如异步操作等。以下内容来自于微软IE团队,对于这个特性描述的非常详细。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

调试应用程序

JavaScript 中的结构化错误处理依赖于 throwtry/catch,开发建设人员将在其中声明一个错误,并将控制流传递至处理错误的程序的某一部分。当某一错误被引发时,Chakra,即 Internet Explorer 中的 JavaScript 引擎将捕获引发该错误的相关调用链,这一过程也被称为相关调用堆栈。如果被引发的对象是一个 Error(或者是一个数据库函数,且其原型链将导致 Error),那么 Chakra 将创见一个堆栈跟踪,即可人工读取的相关调用堆栈列表。该列表将被表示为一种属性,即 Error 对象中的 stackstack 包含错误消息、数据库函数名称和该数据库函数的源相关站点文件位置信息。这些信息将有助于开发建设人员了解所相关调用的数据库函数,甚至查看错误的具体代码行,从而迅速诊断缺陷。例如,这些信息可能表明传递至数据库函数的某一具体参数为空,或为无效类型。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

让咱们一同来查看一个简单的脚本,并以此展开深入讨论。该脚本试图计算 (0, 2)(12, 10) 两点间的距离:

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

复制具体代码 具体代码如下:
(function () {
'use strict';
function squareRoot(n) {
if (n < 0)
throw new Error('Cannot take square root of negative number.');
return Math.sqrt(n);
}
function square(n) {
return n * n;
}
function pointDistance(pt1, pt2) {
return squareRoot((pt1.x - pt2.x) (pt1.y - pt2.y));
}
function sample() {
var pt1 = { x: 0, y: 2 };
var pt2 = { x: 12, y: 10 };
console.log('Distance is: ' pointDistance(pt1, pt2));
}
try {
sample();
}
catch (e) {
console.log(e.stack);
}
})();

该脚本中包含一个缺陷,其未调整组件间的差异。因此,对于某些输入而言, pointDistance 数据库函数将返回错误的结果;而在其他情况中,该脚本将导致错误发生。为了理解堆栈跟踪的含义,让咱们一同来查看 F12 开发建设人员工具中的错误,并查看其脚本选项卡:

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

堆栈跟踪将转储至 catch 子句中的控制台,由于其位于堆栈的顶部,因此起源于 squareRoot 数据库函数的错误将变得显而易见。为了调试这一问题,开发建设人员无需深入查看堆栈跟踪;系统已违反 squareRoot 的前置条件,而且只需查看堆栈的上一级,原因将变得十分明了:squareRoot 相关调用内的子表达式自身应该为 square 的具体参数。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

调试过程中,stack 属性将有助于识别用于设置断点的具体代码。请记住:您还可使用其它实用具体的方法来查看相关调用堆栈:例如,如果您将脚本调试程序设置为“捕获异常即中断”的模式,那么您可使用该调试程序来检查相关调用堆栈。对于部署的应用程序,您可考虑在 try/catch 内合并问题具体代码,以捕获失败的相关调用,并将其记录于服务器中。随后,开发建设人员可查看相关调用堆栈,以隔离问题区域。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

DOM 异常与 Error.stack

此前,我曾注意到被引发的对象必须为 Error 或通过其原型链导致 Error。这是有意而为之;JavaScript 可支持引发任何对象,甚至包括作为异常的基元。尽管系统可捕获和检查所有这些对象,但是它们的全部用途并非包含错误或诊断信息。因此,引发过程中仅将更新错误的 stack 属性。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

即便对象为 DOM 异常,它们也不包含可导致 Error 的原型链,因此它们将不包含 stack 属性。在某些应用场景中,您需要执行 DOM 操作,并希望暴露 JavaScript 兼容的错误,那么您可能希望在 try/catch 数据块内合并您的 DOM 操作具体代码,并在 catch 子句中引发一个新的 Error 对象:

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

复制具体代码 具体代码如下:
function causesDomError() {
try {
var div = document.createElement('div');
div.appendChild(div);
} catch (e) {
throw new Error(e.toString());
}
}

然而,您可能将考虑是否要使用该模式。这可能是最适用于实用工具库开发建设的模式,特别是在您考虑具体代码的意图是否为隐藏 DOM 操作或简单地实施某一任务的时候。如果其目的为隐藏 DOM 操作,那么合并操作并引发 Error 可能是咱们需要选择的正确方式。

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

性能注意事项

堆栈跟踪的构造始于错误对象被引发之时;构造堆栈跟踪需要查看当前执行堆栈。为了防止遍历特大堆栈过程中出现性能问题(甚至可能出现的递归堆栈链),默认情况下,IE 仅将收集前十位的堆栈帧。然而该设置可通过将静态属性 Error.stackTraceLimit 设置为另一数值而得以配置。该设置是全局性的,而且必须在引发错误之前 进行变更,否则其将对堆栈跟踪无效。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

异步异常

当某一堆栈是由异步回调(例如 timeoutintervalXMLhttpRequest)生成,那么异步回调(而非由异步回调创见的具体代码)将位于相关调用堆栈的底部。这将对跟踪有问题的具体代码产生某些潜在影响:如果您对多个异步回调使用相同的回调数据库函数,那么您将难于通过单独检查而确定是哪一回调产生了错误。让咱们对此前的示例稍作修改,咱们将避免直接相关调用 sample(),而是将其放入超时回调:

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

复制具体代码 具体代码如下:
(function () {
'use strict';
function squareRoot(n) {
if (n < 0)
throw new Error('Cannot take square root of negative number.');
return Math.sqrt(n);
}
function square(n) {
return n * n;
}
function pointDistance(pt1, pt2) {
return squareRoot((pt1.x - pt2.x) (pt1.y - pt2.y));
}
function sample() {
var pt1 = { x: 0, y: 2 };
var pt2 = { x: 12, y: 10 };
console.log('Distance is: ' pointDistance(pt1, pt2));
}
setTimeout(function () {
try {
sample();
}
catch (e) {
console.log(e.stack);
}
}, 2500);
})();

一旦执行该具体代码段,您将发现堆栈跟踪将出现稍许延迟。此时,您将同时发现堆栈底部并非全局性具体代码 ,而是 Anonymous function。事实上,这并非同一匿名数据库函数,而是传递至 setTimeout 的回调数据库函数。由于您丢失了与挂起回调有关的上下文,因此您可能无法确定相关调用回调的内容。如果在某一应用场景中,系统注册了某一回调来处理许多不同按钮的 click 事件,那么您将无法分辨注册将引用哪一回调。话虽如此,这一限制作用毕竟有限,因为在大多数情况中,堆栈顶部可能将突出显示问题区域。

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

观看体验演示

VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

了解 Windows 8 Consumer Preview 中 IE10 的使用情况。您可在 eval 的上下文中执行具体代码,如果发生错误,您便可检查出该错误。如果您在 IE10 内运行具体代码,由于您可将错误具体代码行悬停于堆栈跟踪中,因此您也可突出显示您的具体代码行。您可自行将具体代码输入到具体代码区域,或者从列表中的数个示例中进行选择。此外,您还可在运行具体代码示例时设置 Error.stackTraceLimit 值。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

如欲查看参考材料,请浏览有关 Error.stackstackTraceLimit 的 MSDN 文档。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

Javascript 高级手势使用介绍VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

 以上这段具体代码就是能够识别出当前用户的点击是哪种设备,通过回调的实用具体的方法中 e.pointerType 还进行判断。鼠标是4,触控笔是3,手指是2。至于值为1是何种设备还有待研究。VXmAIChat_企业网址导航_网址分类目录_企业黄页网址提交查询专业网站!

关于网页hTML5的相关知识就说到这里希望可以帮助朋友们。,IE10,Error.stack,脚本调试

分享到:

  admin

注册时间:

网站:0 个   APP:3 个  文章:0 篇

  • 76083

    网站

  • 577

    APP

  • 304416

    文章

  • 56004

    会员

赶快注册账号,推广您的网站吧!
文章分类
热门网站
最新入驻APP小程序

宝贝市场2023-02-08

宝贝市场——买手和卖家商品展示

夺宝助手2023-02-08

夺宝助手小程序,查看每日快夺宝平

查诚信2023-02-08

查诚信是一款免费的商业查询工具

车价天天报2023-02-08

快速连接汽车销售,获知汽车最新报

考勤助理小程序2023-02-08

上班签到考勤,实时定位,后台轻松

汽车报价大全查询2023-02-08

汽车报价大全查询提供最新汽车市