马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
一. 错误处理:
1. 错误:程序执行过程中导致程序异常中断的状态
Error对象:封装了错误信息的对象
何时创建Error对象:发生错误时,js自动创建
Error子对象:6种:
ReferenceError: 引用错误,找不到对象
SyntaxError: 语法错误
TypeError: 类型错误,错误的使用类型或类型的方法
RangeError: 范围错误,参数超范围
EvalError、URIError
2. 错误处理:发生错误时,保证程序不中断
如何错误处理:
try{
可能发生错误的代码 //如果出错,出错位置及后面代码不执行
}catch(err){ //err中发生错误时会自动收到创建的error对象
err.message: 保存了错误的详细原因
err.name: 保存了错误对象的名称
如果发生错误,才执行的错误处理代码
}finally{
无论是否发生错误,都执行的代码
一定会在退出之前执行
一般释放用过的对象资源:xxx=null
}
- 例如:
- var n=345.465;
- var d=prompt("请输入四舍五入的位数");
- try{
- console.log(n.toFixed(d));
- }catch(err){
- alert(err.message);
- }finally{
- alert("释放资源");
- }
复制代码
其实,如果可以提前预知错误的原因:建议使用if代替try catch
执行效率:try中尽量少的包含代码
try的执行效率低,且多创建一个error对象
- 例如: 使用if代替 try..catch
- //使用if代替
- var n=345.465;
- var d=prompt("请输入四舍五入的位数");
- if(d>=0&&d<=20){
- console.log(n.toFixed(d));
- }else{
- alert("位数不在0-20之间!");
- } alert("释放资源");
复制代码
3.抛出自定义错误:
throw new Error("自定义错误消息");
- 例如:
- //throw new Error(“自定义错误”)
- function round(num,d){
- if(!isNaN(d)){
- num*=Math.pow(10,d);
- num=Math.round(num.toFixed(2));
- num/=Math.pow(10,d);
- return num;
- }else{throw new Error("第二个参数必须是数字");}
- }
- function fun(){
- var num=prompt("输入四舍五入的值");
- var d=prompt("输入位数");
- alert(round(num,d));
- }fun();
复制代码
|