js中常见的几种错误处理

错误处理

1.什么是错误:代表程序执行过程中导致程序无法正常执行的原因.
2.什么是错误处理:即使程序发生错误,也保证不异常退出的机制
3.为什么使用错误处理:任何程序只要发生错误,就会立刻中断退出
4.何时使用错误处理:只要希望程序即使出错,也不会中断退出

 //JS程序在执行前 检查是否有语法错误
console.log(1);
//ar a=1  语法错误
//console.log(a);//但是 1 被打印了出来   引用错误
//var b=2;
//b();//类型错误   1 被打印了出来
//var person={ename:'tom'};
//person.ename();//类型错误

//var arr=new Arrary(-3);//范围错误  
console.log(2);

语法错误(SyntaxError): 错误的使用了中文符号,缺少括号,和语法上拼写的错误

引用错误(ReferenceError): 使用了未声明的变量

类型错误(TypeError): 错误的使用了小括号()

范围错误(RangeError): 参数的使用超出了范围

EvalError

URIError

说明:第一种错误(语法错误)出现后,一行代码都不执行;其它的错误出现后,会影响后边代码的执行。

自定义错误: throw ‘自定义的错误信息’;(这里的throw出是err,如果想看到throw中的信息需要自行打印err 且只能在catch中打印)

console.log(1);
//自定义错误
//var num='abc';//用户未按照数字要求
var num='10';//不会触发错误  
//如果num不是数字 抛出自定义错误
//先调用Number转数值(带不带双引号都是数字)
if(isNaN(num)){
	//判断是否 为 NaN  是 NaN  为true
	throw '您输入的不是数字,请输入一个数字';
}
console.log(2);

try{

可能出现的错误(类型/引用/范围/自定义错误)

}catch(err){

如果try中代码保错,才会执行这里边的代码(errj就是throw的内容)

会把错误信息交给err

不会再阻止代码往后执行

}

 console.log(1);
  //错误处理
  //要求提供的数字 5~10之间
  //var num=11;
  //if(num>10){
	  //throw '太大了';
  //}
  //下边语句就执行不了了

//尝试执行
  //要求提供的数字 5~10之间
   //var num=11;
   var num=7;
  try{
     if(num>10){
	    throw '太大了';
      }
  }catch(err){//只有 try 中的代码报错,才会执行catch中的代码.错误信息会交给err
      console.log(err+':请输入一个5~10之间的数字');

  }
  //下边语句就执行不了了
console.log(2);

综上,throw只能配合try catch使用否则无效,当没有throw抛出时,catch中的err指的是try中的错误
补充
finally的用法
try{ 可能出错的代码}catch(err){ 只有出错才执行的错误处理代码 比如: 错误提示,记录日志,保存进度/数据}finally{ 无论是否出错都必须执行的代码 释放资源}

不管try代码块的执行是如何被终止的(出现异常、return、自然终止)finally中的语句始终会被执行,正是由于finally的这种特性,通常finally用来执行一些清理工作。如果try中代码是以return,continue,break的方式终止的,Javascript引擎会在执行完finally中的语句以后再执行相应的try中的返回语句。(这句话是摘抄一个作者的但是忘了是谁,如果看到一定联系我)
catch和finally至少要写一个,当然也可以都写
优化:如果是可以预知的范围性的错误,尽量用if else代替try catch

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值