JS 攔截/捕捉 全域錯誤 全域Error onerror

來源:互聯網
上載者:User

移動Web開發過程中,在真機測試時,往往會遇到一些PC調試無法重現的問題,這時候我們需要在手機上攔截錯誤,並有相應的輸出。

公司和網上都有類似的工具/類庫,但如果純粹一個簡單的調試,或許不需要引入工具或類庫,我們只需要知道全域攔截的原理。

 

其實很簡單,就是window.onerror
文法:


onerror=handleErr

function handleErr(msg,url,l)
{
//Handle the error here
return true or false
}



瀏覽器是否顯示標準的錯誤訊息,取決於 onerror 的傳回值。如果傳回值為 false,則在控制台 (JavaScript console) 中顯示錯誤訊息。反之則不會。

 
執行個體:

下面的例子展示如何使用 onerror 事件來捕獲錯誤:


<html>
<head>
<script type="text/javascript">
onerror=handleErr
var txt=""

function handleErr(msg,url,l)
{
txt="There was an error on this page.\n\n"
txt+="Error: " + msg + "\n"
txt+="URL: " + url + "\n"
txt+="Line: " + l + "\n\n"
txt+="Click OK to continue.\n\n"
alert(txt)
return true
}

function message()
{
adddlert("Welcome guest!")
}
</script>
</head>

<body>
<input type="button" value="View message" onclick="message()" />
</body>

</html>



 

另外,如果我們想在chrome控制台中直接類比這個過程,會發現,直接使用throw new Error,無法觸發這個onerror,這個可能是因為控制台的環境跟頁面環境不一樣。

但換一個方式,就可以觸發了:

setTimeout(function(){throw new Error}, 1000)

真夠機智



相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。