當頁面錯誤的URL時調用該函數應向控制檯記錄消息並停止腳本的執行。我怎麼做?
如果URL不可接受,請輸入error並附上問題描述。例如
throw new Error("operation x not supported at this page location");
這會導致消息被記錄到控制檯。確保在throw
語句周圍控制try...catch語句的缺席,或者在導致該語句的任何函數調用周圍,在拋出錯誤時暫停執行。
正如評論中提到的,拋出異常不會取消尚未從已啓動但未完成的異步操作進行的回調。
如果try...catch
語句是在效果時引發錯誤,執行與不按throw
語句的(其他)代碼進一步執行控制catch語句恢復,並且在不恢復中介函數調用。
編輯迴應評論:
,沒有抓住它的功能不返回內執行throw
語句的功能。也就是說,它不會在調用代碼後立即返回值並立即恢復執行。
如果用戶編寫的try塊圍繞直接或間接調用引發該錯誤的函數,調用堆棧將恢復爲執行try塊時生效的調用堆棧。在try塊中爲函數調用而創建的任何堆棧框架將從調用堆棧中彈出並丟棄,而無需進一步執行調用的函數。執行繼續執行與try塊關聯的catch塊,傳遞作爲catch參數拋出的錯誤,或者如果沒有提供catch塊,則在finally塊中執行。 系統不會自動將在try塊內拋出的錯誤記錄到控制檯。
如果找不到用戶寫入的try塊,則會彈出所有調用堆棧幀,線程死亡並將拋出的錯誤記錄到控制檯。因此,在try塊之外拋出一個錯誤會停止執行,而不調用退出函數。
Python中的try...cacth
的等價物似乎是try...except
,raise
語句用於throw
,語法略有不同。
是的,這就是JS(和Python)中的異常工作。拋出代碼的執行直到最接近的catch處理程序。 – Bergi
您還需要考慮代碼的性質(異步或同步)。例如,在HTTP請求之後拋出錯誤不會停止請求,也不會有任何關聯的回調。 – MinusFour
@Bergi我沒有想到。我認爲'catch'可以用來報告錯誤,然後退出。我在我的函數中使用它,我仍然得到一個對象返回。 – Melab