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);
新闻热点
疑难解答