異常處理是真實專案中必不可少的乙個部分。因為乙個稍微複雜點的專案一般都多多少少都有一些意想不到的bug。
【使用場景 1】
正常情況下,如果程式出現錯誤,那麼從出現錯誤的地方開始,之後的**都不會被執行。
但有時候我們希望即使在出現錯誤後,程式仍需要繼續執行。
【使用場景 2】
在專案上線之後,需要再開發新功能。新功能上線,不能保證百分百無bug,這時可以用異常處理來解決出現錯誤的問題,並把錯誤資訊返回給後台生成錯誤日誌。
例子
console.log(num);
console.log('能執行這行**嗎?');
輸出結果
uncaught referenceerror: num is not defined
在呼叫乙個未定義的變數時,js是會報錯的,而出現錯誤後的所有**都不會被執行。所以console.log('能執行這行**嗎?');
這句是沒被執行的。
如果想要執行,就可以用以下寫法
try catch (e) finally
console.log('能執行這行**嗎?');
我們看到執行結果。
因為try裡面的**出現了錯誤,所以執行了catch裡面的**。
之後又執行了finally裡面的**,因為finally裡寫的**是不管try裡的**執行是否出錯都會執行的。
最後,會執行console.log('能執行這行**嗎?');
。
即使try裡的**出現了錯誤也會執行之後的**。
注意:catch和finally都是可以選填。但在使用try語句時,catch和finally必須使用其中乙個跟著try後面。
以上就是普通異常處理的使用方法。
這就是執行結果。
報錯是紅色字,因為我用了console.erroe()
。
詳細用法可以看 【js】console - 控制台的幾種輸出方式
上面的例子,定義了乙個 **devide **的函式,判斷如果分子為0,就用 **throw **丟擲異常。
之後在 **try **裡面呼叫 **devide **函式,如果出現分子為0,則執行 **catch **裡面的**(捕捉異常)。
可以看到,上個面的例子中,並沒有用到 **finally。finally主要是後端開發的時候用得比較多,比如用 node.js 的時候,finally **主要作用是釋放資源。前端很少用得上。
最後需要注意的是,不能所有地方都用這種方式來寫,雖然這種方式寫的**出現錯誤後還能繼續執行。但會影響專案的整體效能。
SpringBoot處理全域性異常返回json字串
之所以要在專案中定義全域性異常捕獲,是因為直接異常資訊給前端是真的很不友好。首先,建立乙個commonexceptionhandler 類 自定義 在類頭加上 controlleradvice註解。description 公共異常處理類 author gary date 2019 03 22 23 ...
js中的異常處理方法
1.js中的異常 簡單粗暴就是有錯誤出現 由於js是單執行緒的,編寫的 都是序列的,所以一旦前面 出現錯誤,程式就會被中斷,後續 就不會被執行 2.js中的異常處理 1 自身編寫 問題,手動修復bug 2 外界原因問題,try catch 對於一些可預見的異常,我們可以使用try catch 來處理...
js 異常處理 錯誤不彈出視窗
問題 幾乎開啟的每個網頁左下角都顯示 網頁有錯誤 行 2 char 1 錯誤 語法錯誤 0 腳 本錯誤 形成的原因是因為訪問者所使用的瀏覽器不能完全支援頁面裡的指令碼,而且出現頻率並不低。遇到 指令碼錯誤 時一般會彈出乙個非常難看的指令碼執行錯誤 警告視窗,而事實上,指令碼錯誤並不會影響 瀏覽,因此...