一:错误捕获

1.try-catch 语句(错误捕获)

try{

  //这里放置可能出现问题的代码

}catch(error){

  //错误发生时执行的代码

  console.log(error.name)    //打印错误类型

  console.log(error.message)  //打印错误消息

}

说明:如果try中的代码出现任何错误,就会立即退出代码执行过程,接着执行catch块。执行过catch块之后,浏览器默认错误已经处理。

2.finally 字句

try{

}catch(error){

}finally{

}

 说明:无论try里面的语句有没有报错,catch里面的语句有没有执行到,都会执行finally语句

例:

function test(){
try{
return 1
}catch(error){
return 2
}finally{
return 0
}
}
执行test函数,始终会返回0 因为最终都会执行finally块。

3.错误类型

  Error:基类型,所有错误都继承该类型

  EvalError:使用eval()函数(该函数可以执行js代码语句)异常时候抛出。通常是没有直接调用该函数会导致该错误

  RangeError:数值超出相应范围触发   例如:定义一个长度为 -20  位的数组   var array = new Array(-20)

  ReferenceError:找不到对象时触发  例如:var obj = x  在变量x未定义的情况下 抛出错误

  SyntaxError:传入eval()函数的代码出现错误时抛出

  TypeError:最常见,执行特定类型的操作时,变量的类型不符合要求导致   例如:访问不存在的方法、变量中保存着意外的类型

总结:什么时候试用try-catch语句捕获错误?

  通常在大型的项目中,或者使用别人的库,源代码不能修改  处理那些我们无法控制的错误。

  当你明确自己的代码在何时何地会出现什么错误,使用try-catch语句就不太合适了

二:错误抛出

1.throw    使用throw 操作符代码会立即停止执行,除非使用try-catch捕获错误

基本语法  throw new Error('您要自定义的错误信息')    throw new TypeError()...................

自定义错误类型

function MyError(message){
this.name = MyError
this.message = message
} MyError.prototype = new Error() //继承Error 因为Error是所有错误类型的基类 使用:throw new MyError('我自己定义的错误类型')  

完整案例:

function test(array){
if(!(array instanceof Array)){
throw new Error('参数不是数组')
}
array.sort();
for(var i = 0;i<array.length;i++){
if(array[i]>100){
return array[i];
}
}
return -1;
}; 执行该函数需要传递一个数组类型的参数
首先验证参数是不是数组,如果不是数组则抛出错误

总结:捕获错误的目的为了防止浏览器以默认的行为处理错误,抛出错误的目的是可以获取详细具体的错误信息

js基础——错误处理的更多相关文章

  1. js基础篇——call/apply、arguments、undefined/null

    a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 ...

  2. Web3D编程入门总结——WebGL与Three.js基础介绍

    /*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...

  3. JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象

       前   言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...

  4. js基础--javaScript数据类型你都弄明白了吗?绝对干货

    欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...

  5. 前端面试题目汇总摘录(JS 基础篇)

    JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...

  6. js基础梳理-如何理解作用域和作用域链?

    本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关 ...

  7. 原生JS 基础总结

    0. 好习惯 分号 ; 花括号 {}, var 弄清楚 null , undefined 区别 , isNaN, === 与 == 区别 1. prompt , confirm , alert 不同框 ...

  8. GSAP JS基础教程--TweenLite操作元素的相关属性

    今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了.   代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...

  9. 进击Node.js基础(二)

    一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...

随机推荐

  1. 使用GDAL/GEOS求面特征的并集

    存在这样一个示例的矢量文件,包含了两个重叠的面特征: 一个很常见的需求是求取这个矢量中所有面元素的并集,通过GDAL/GEOS很容易实现这个功能,具体代码如下: #include <iostre ...

  2. WSL2(预览版)体验笔记

    WSL2安装 WSL2在今年5月份Microsoft Build大会上发布了,但至今Windows10一直没收到更新推送,我想这么久过去就算没进入正式,至少也到了RC版了吧,于是开始折腾准备体验一把. ...

  3. Prometheus学习系列(四)之Prometheus 配置说明

    前言 本文来自Prometheus官网手册 和 Prometheus简介 说明 Prometheus通过命令行和配置文件进行配置,命令行配置不能修改的系统参数(例如存储位置,要保留在磁盘和内存中的数据 ...

  4. sqlserver 标准系统数据库

    SQL server系统数据库很重要,大部分时候都不应该修改他们.唯一例外的是model数据库和tempdb数据库.model数据库允许部署更改到任何新创建的数据库(如存储过程),而更改tempdb数 ...

  5. mysql创建用户后无法进入

    说明 在mysql中添加用户: #mysql -u root -p >use mysql: >update user set password="" where use ...

  6. window 操作

    忘记密码:https://jingyan.baidu.com/article/066074d6762a59c3c21cb0f9.html

  7. 云K8S - AWS容器库ECR(ERS)编排ECS-EKS以及阿里云编排ACS-ACK

    云K8S相关 AWS 部分-ECR(ERS) ECS EKS 20180824 Chenxin AWS的容器编排目前分为 ECS 和 EKS 两种. AWS价格说明 Fargate模式的ECS,换算成 ...

  8. pgwSlideshow.js

    <!DOCTYPE html> <html> <head id="Head"> <meta http-equiv="Conten ...

  9. C#后台架构师成长之路-进阶体系篇章大纲

    这些知识体系概念和应用如果不了解,怎么修炼你的内功..... 1.数据类型的理解,比如bool,byte,short,ushort,int,uint,long,ulong,float,double,s ...

  10. 检测值是否存在(??)(Freemarker的null值处理)

    使用形式: unsafe_expr?? 或 (unsafe_expr)?? 这个操作符告诉我们一个值是否存在.基于这种情况, 结果是 true 或 false. 访问非顶层变量的使用规则和默认值操作符 ...