婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > IE10 Error.stack 讓腳本調試更加方便快捷

IE10 Error.stack 讓腳本調試更加方便快捷

熱門標簽:怎么做百度地圖標注 地圖標注柱狀圖 智能芯電話機器人 臨海地圖標注app 400開頭的電話好申請不 百度地圖標注為什么總是封號 小朱地圖標注 四川移動電銷外呼客戶管理系統 咸陽穩定外呼系統軟件

  在IE10中已經新加入了Error.stack 的支持,可以加快開發人員的腳本調試,并更正錯誤。尤其是一些難以重現的錯誤,如異步操作等。以下內容來自于微軟IE團隊,對于這個特性描述的非常詳細。

調試應用程序

JavaScript 中的結構化錯誤處理依賴于 throwtry/catch,開發人員將在其中聲明一個錯誤,并將控制流傳遞至處理錯誤的程序的某一部分。當某一錯誤被引發時,Chakra,即 Internet Explorer 中的 JavaScript 引擎將捕獲引發該錯誤的調用鏈,這一過程也被稱為調用堆棧。如果被引發的對象是一個 Error(或者是一個函數,且其原型鏈將導致 Error),那么 Chakra 將創建一個堆棧跟蹤,即可人工讀取的調用堆棧列表。該列表將被表示為一種屬性,即 Error 對象中的 stackstack 包含錯誤消息、函數名稱和該函數的源文件位置信息。這些信息將有助于開發人員了解所調用的函數,甚至查看錯誤的代碼行,從而迅速診斷缺陷。例如,這些信息可能表明傳遞至函數的某一參數為空,或為無效類型。

讓我們一同來查看一個簡單的腳本,并以此展開深入討論。該腳本試圖計算 (0, 2)(12, 10) 兩點間的距離:

復制代碼
代碼如下:

(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 開發人員工具中的錯誤,并查看其腳本選項卡:

堆棧跟蹤將轉儲至 catch 子句中的控制臺,由于其位于堆棧的頂部,因此起源于 squareRoot 函數的錯誤將變得顯而易見。為了調試這一問題,開發人員無需深入查看堆棧跟蹤;系統已違反 squareRoot 的前置條件,而且只需查看堆棧的上一級,原因將變得十分明了:squareRoot 調用內的子表達式自身應該為 square 的參數。

調試過程中,stack 屬性將有助于識別用于設置斷點的代碼。請記住:您還可使用其它方法來查看調用堆棧:例如,如果您將腳本調試程序設置為“捕獲異常即中斷”的模式,那么您可使用該調試程序來檢查調用堆棧。對于部署的應用程序,您可考慮在 try/catch 內合并問題代碼,以捕獲失敗的調用,并將其記錄于服務器中。隨后,開發人員可查看調用堆棧,以隔離問題區域。

DOM 異常與 Error.stack

此前,我曾注意到被引發的對象必須為 Error 或通過其原型鏈導致 Error。這是有意而為之;JavaScript 可支持引發任何對象,甚至包括作為異常的基元。盡管系統可捕獲和檢查所有這些對象,但是它們的全部用途并非包含錯誤或診斷信息。因此,引發過程中僅將更新錯誤的 stack 屬性。

即便對象為 DOM 異常,它們也不包含可導致 Error 的原型鏈,因此它們將不包含 stack 屬性。在某些應用場景中,您需要執行 DOM 操作,并希望暴露 JavaScript 兼容的錯誤,那么您可能希望在 try/catch 數據塊內合并您的 DOM 操作代碼,并在 catch 子句中引發一個新的 Error 對象:

復制代碼
代碼如下:

function causesDomError() {
try {
var div = document.createElement('div');
div.appendChild(div);
} catch (e) {
throw new Error(e.toString());
}
}

然而,您可能將考慮是否要使用該模式。這可能是最適用于實用工具庫開發的模式,特別是在您考慮代碼的意圖是否為隱藏 DOM 操作或簡單地實施某一任務的時候。如果其目的為隱藏 DOM 操作,那么合并操作并引發 Error 可能是我們需要選擇的正確方式。

性能注意事項

堆棧跟蹤的構造始于錯誤對象被引發之時;構造堆棧跟蹤需要查看當前執行堆棧。為了防止遍歷特大堆棧過程中出現性能問題(甚至可能出現的遞歸堆棧鏈),默認情況下,IE 僅將收集前十位的堆棧幀。然而該設置可通過將靜態屬性 Error.stackTraceLimit 設置為另一數值而得以配置。該設置是全局性的,而且必須在引發錯誤之前 進行變更,否則其將對堆棧跟蹤無效。

異步異常

當某一堆棧是由異步回調(例如 timeoutintervalXMLHttpRequest)生成,那么異步回調(而非由異步回調創建的代碼)將位于調用堆棧的底部。這將對跟蹤有問題的代碼產生某些潛在影響:如果您對多個異步回調使用相同的回調函數,那么您將難于通過單獨檢查而確定是哪一回調產生了錯誤。讓我們對此前的示例稍作修改,我們將避免直接調用 sample(),而是將其放入超時回調:

復制代碼
代碼如下:

(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 事件,那么您將無法分辨注冊將引用哪一回調。話雖如此,這一限制作用畢竟有限,因為在大多數情況中,堆棧頂部可能將突出顯示問題區域。

觀看體驗演示

了解 Windows 8 Consumer Preview 中 IE10 的使用情況。您可在 eval 的上下文中執行代碼,如果發生錯誤,您便可檢查出該錯誤。如果您在 IE10 內運行代碼,由于您可將錯誤代碼行懸停于堆棧跟蹤中,因此您也可突出顯示您的代碼行。您可自行將代碼輸入到代碼區域,或者從列表中的數個示例中進行選擇。此外,您還可在運行代碼示例時設置 Error.stackTraceLimit 值。

如欲查看參考材料,請瀏覽有關 Error.stackstackTraceLimit 的 MSDN 文檔。

標簽:公主嶺 黃石 平涼 黃石 平頂山 山南 南平 陜西

巨人網絡通訊聲明:本文標題《IE10 Error.stack 讓腳本調試更加方便快捷》,本文關鍵詞  IE10,Error.stack,讓,腳本,調試,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《IE10 Error.stack 讓腳本調試更加方便快捷》相關的同類信息!
  • 本頁收集關于IE10 Error.stack 讓腳本調試更加方便快捷的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲精品欧美在线| 国产一区二区美女诱惑| 亚洲线精品一区二区三区八戒| 色天使久久综合网天天| 亚洲另类在线一区| 精品国产百合女同互慰| 欧美一三区三区四区免费在线看| 九一九一国产精品| 亚洲色图欧美偷拍| 欧美国产国产综合| 国产精品久久综合| 欧美人牲a欧美精品| 国产成人精品免费在线| 精品对白一区国产伦| 色婷婷久久一区二区三区麻豆| 福利一区在线观看| 国产欧美日韩在线看| 欧美日韩视频第一区| 波多野结衣在线一区| 国产精品免费av| 麻豆精品视频在线观看免费| 亚洲一区在线观看视频| 九色porny丨国产精品| 日韩天堂在线观看| 色吧成人激情小说| 丰满少妇在线播放bd日韩电影| 天堂午夜影视日韩欧美一区二区| 国产精品美日韩| 欧美自拍偷拍一区| 国产精品一级片在线观看| 国产成人在线免费观看| 亚洲一线二线三线久久久| 精品国产一区二区三区av性色| 久久精品72免费观看| 日韩欧美视频在线| 夜夜嗨av一区二区三区| 亚洲地区一二三色| 中文字幕一区二区三| caoporen国产精品视频| 韩国三级在线一区| 国产福利91精品一区二区三区| 蜜臀91精品一区二区三区| 久久精品国产精品亚洲红杏| 久热成人在线视频| 一区二区三区免费在线观看| 日本一区二区综合亚洲| 精品久久久久久久久久久院品网| 欧美精品粉嫩高潮一区二区| 国产91精品久久久久久久网曝门| 久久97超碰国产精品超碰| 日韩影院精彩在线| 欧美精品久久一区| 欧美xxxx老人做受| 亚洲成人tv网| 色偷偷一区二区三区| 中文字幕免费一区| 日本道色综合久久| 午夜精品一区二区三区三上悠亚| 粉嫩高潮美女一区二区三区| 精品国产伦理网| 美女久久久精品| 秋霞电影网一区二区| 欧美视频一区二区在线观看| 99精品热视频| ww久久中文字幕| 国产91色综合久久免费分享| 国产拍欧美日韩视频二区| 亚洲人成精品久久久久久 | 国产精品无人区| 成人h精品动漫一区二区三区| 日韩欧美精品三级| 成人av先锋影音| 1024成人网| 狠狠色丁香久久婷婷综| 欧美三级韩国三级日本一级| 国产欧美日韩精品在线| 国产精品资源在线看| 黑人巨大精品欧美黑白配亚洲| 色综合久久中文综合久久牛| 国产精品卡一卡二卡三| 国产精品国产三级国产普通话蜜臀| 国产一区二区三区四| 国产欧美日韩另类视频免费观看| 国产乱码精品一区二区三| 成人免费在线视频| 色婷婷综合视频在线观看| 日韩不卡一区二区三区| 日韩女优毛片在线| 国产传媒久久文化传媒| 中文字幕综合网| 日韩精品在线一区二区| 亚洲色图欧美激情| 日本精品一级二级| 久久成人免费电影| 亚洲欧美日韩在线播放| 国产成人精品免费一区二区| 91在线播放网址| 色综合久久久网| 精品视频一区三区九区| 国产乱码精品一区二区三区av| 久久精品国产精品亚洲精品| 日韩欧美色电影| 亚洲午夜一二三区视频| 中文字幕欧美一| 久久精工是国产品牌吗| 欧美伊人久久久久久午夜久久久久| 日韩精品专区在线影院观看| 亚洲精品中文在线影院| 国产成人aaa| 26uuu国产在线精品一区二区| 亚洲一区二区三区三| 日本道免费精品一区二区三区| 日本一区二区三区在线不卡| 蜜桃视频在线一区| 久久女同精品一区二区| 国产一区二区主播在线| 日韩美一区二区三区| 国产精品自拍毛片| 最新热久久免费视频| 欧美日韩精品一区二区三区四区 | 久久婷婷国产综合精品青草| 一本久道久久综合中文字幕 | 精品欧美一区二区三区精品久久| 免费成人性网站| 一区二区三区四区国产精品| 久久久国产精华| 26uuu国产在线精品一区二区| 在线亚洲人成电影网站色www| 韩国精品主播一区二区在线观看| 午夜不卡在线视频| 亚洲一区二区av在线| 国产精品久久久久久久久免费桃花| 日韩午夜中文字幕| 3d成人动漫网站| 91精品国产欧美一区二区成人| 国产一区二区91| 欧美一级免费观看| 99久久婷婷国产综合精品电影| 一区二区欧美国产| 国产精品人成在线观看免费| 欧美性一二三区| 日本丰满少妇一区二区三区| 国产精品1区2区| 亚洲一区二区三区视频在线播放| 久久精品人人做人人综合| 欧美性视频一区二区三区| 日本精品一区二区三区四区的功能| 97久久超碰国产精品| 91欧美一区二区| 色婷婷综合激情| 91国产精品成人| 91精品在线麻豆| 成人激情小说乱人伦| 北条麻妃国产九九精品视频| 1000精品久久久久久久久| 国产一区二区免费在线| 高清国产一区二区| 精品视频一区三区九区| 欧美tk—视频vk| 一区二区欧美精品| 欧美妇女性影城| 7777精品伊人久久久大香线蕉超级流畅 | 中文字幕第一区二区| 91在线看国产| 一本色道久久综合亚洲aⅴ蜜桃| 不卡一区二区三区四区| 99久久久精品| 欧美视频一区二区三区在线观看 | 成人动漫在线一区| 91丨porny丨户外露出| 在线观看一区日韩| 欧美精品一区二区三区在线| 日韩精品一区二区三区视频| 国产欧美日韩一区二区三区在线观看| 国产精品乱码一区二三区小蝌蚪| 成人免费一区二区三区在线观看| 午夜激情久久久| 国产一区二区三区在线观看免费| 成人精品免费视频| 欧美一级xxx| 1区2区3区国产精品| 日韩电影一区二区三区| thepron国产精品| 91精品国产一区二区三区| 中文字幕一区二区在线观看| 秋霞国产午夜精品免费视频| 成人永久aaa| 久久久久久**毛片大全| 日韩av在线播放中文字幕| 丰满岳乱妇一区二区三区| 日韩一区二区麻豆国产| 亚洲视频综合在线| 国产一区二区在线电影| 欧美色精品在线视频| 亚洲精选一二三| 色婷婷激情综合| 亚洲成人精品在线观看| 91日韩一区二区三区| 精品日韩成人av| 韩国精品一区二区|