簡體   English   中英

拋出假錯誤會停止腳本嗎?

[英]Throwing fake errors will stop the script?

我之前沒有使用過throw new ReferenceError ,當我使用它時,我發現它將停止腳本:

alert("a");  //Yes
throw new ReferenceError("Error.");  //Yes
alert("b");  //Nope

http://jsfiddle.net/DerekL/uKEZ4/

我只想在控制台中拋出一個錯誤而不停止整個腳本。 我試圖這樣做:

alert("a");  //Yes
try{
    throw new ReferenceError("Error.");  //Yes
}catch(e){}
alert("b");  //Yes

http://jsfiddle.net/DerekL/uKEZ4/1/

這會起作用,但是我認為這不是最好的方法。 在不停止腳本的情況下顯示錯誤消息的最佳方法是什么?

PS:

console.warn("Error");

在IE上無法使用。

此行為是設計使然。 JavaScript中的異常處理就像許多其他語言一樣工作:C#,Java,Ruby等。

當一個異常被拋出, 展開堆棧,直到它被捉住了它跳過代碼執行catch (在那里將“恢復”執行)。 如果沒有catch ,那么它將完全跳過代碼的末尾(腳本元素,源文件,REPL等)。 在某些情況下(也是“恢復”執行), finally也是一個選擇,但是沒有類似On Error Resume Next 那不是JavaScript。

沒有什么可以改變這種行為。 (我建議僅填充IE以支持console 。)

Error只是一個簡單的Object無論您throw ,它們總是會破壞exec流。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM