var num=parseFloat(PRompt("輸入數字")); //請用戶輸入num var d=prompt("輸入小數位數"); //請用戶輸入d try{ console.log(num.toFixed(d)); }catch(err){ //catch中的代碼只有出錯才執行,不出錯不執行 //err: 自動獲得錯誤對象,包含錯誤信息 console.log(String(err)); }finally{//無論是否出錯,都必須執行 console.log("釋放資源"); num=null; d=null; }因為toFixed()方法的范圍是0~20,所以輸入-1的時候,在范圍之外,就會產生范圍錯誤RangeError, 如果不進行錯誤處理(try...catch...)的話就會報錯, 但是現在經過錯誤處理之后,程序正常執行,在控制臺輸出錯誤信息,并且無論正確或者錯誤都會執行的finally,釋放了資源
四、錯誤處理的原則
1.try中盡量少的包含語句 原因是因為,try語句要經過計算機的檢測看看是否是錯誤的語句,如果是錯誤的語句則會執行catch里面的語句,如果try的語句過多的話,計算機處理速度就會變慢,影響程序的執行。2.如果已經提前預知錯誤的類型,就用if...else...來代替try...catch除掉錯誤預知的這個前提下,if..else..的用法與try...catch...的用法是基本相同的,嚴格意義來說,if..else..的可讀性比try..catch..更強,語句理解能力也更好,開發人員與用戶更加傾向于使用if..else.. 但是如果無法判斷語句是否正確的話,仍然使用try..catch...會更加保險五、拋出自定義錯誤: throw new Error("錯誤信息")
我們如果不想使用系統設置的錯誤信息(例如前面提到的6種),可以自定義錯誤,例如讓用戶輸入一個數字,但是用戶強制輸入了一個字母,系統就會根據自定義錯誤拋出信息function err(a){ if(!isNaN(a)){ console.log("你輸入的數字是:"+a); }else{ throw new Error("你輸入的是非數字,請重新輸入"); } } var a = prompt("請輸入一位數字:"); err(2); err(a);
新聞熱點
疑難解答