一:错误捕获

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. css: hide or dispaly div

    <!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content= ...

  2. ReactNative: 使用弹出框组件ActionSheetIOS组件

    一.简介 在上一篇文章中,详细介绍了对话框组件,除此之外,React-Native系统还给开发者提供了一个弹框框组件ActionSheetIOS组件,它的弹出方式与对框框不同,它是从底部弹出,与iOS ...

  3. Python 的 Geth 封装库 PyGeth

    PyGeth 是一个 Python 封装库,用来作为子进程运行 geth. 系统依赖 该库需要 geth 可执行文件. 安装 pip install py-geth 快速启动 运行连接到 mainne ...

  4. 一文带你深入了解JVM性能调优以及对JVM调优的全面总结

    目录 JVM调优 概念 基本垃圾回收算法 垃圾回收面临的问题 分代垃圾回收详述1 分代垃圾回收详述2 典型配置举例1 典型配置举例2 新一代的垃圾回收算法 调优方法 反思 一.JVM调优的一些概念 数 ...

  5. java开发,入职半年。对未来迷茫,如何发展?

    蛮多人私密我一些问题,关于面试,关于技术的,我只能说有些路只能靠自己去走,没人可以帮到自己,哪怕偶尔帮一到两次,但是技术的路这么长,总归需要自己独自成长的.附一张自己藏书的照片,与各位共勉 工作三年多 ...

  6. python3实现栈的逻辑

    python的队列中本身有很多方法 大家可以看下我的这篇博客,对python的队列的常用方法有简单的介绍 https://www.cnblogs.com/bainianminguo/p/7420685 ...

  7. Python程序设计 测验易错题总结

    1.温度转换 t=input() if t[-1]=="J": t=int(t[:-1]) t1=t/4.186 print("%.3fcal"%t1) els ...

  8. Hive数据类型和DDL操作

    hive命令 在Linux下的命令行中直接输入如下命令,可以查看帮助信息: # hive -help 常用的如-e.-f参数. 使用-e参数,可以直接在命令行传递SQL语句进行hive表数据的查询: ...

  9. 剑指offer笔记面试题6----从未到头打印链表

    题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值.链表节点定义如下: struct ListNode{ int m_nKey; ListNode* m_pNext; } 测试用例: 功能测 ...

  10. (草稿)如何判断一名UiPath开发人员是否合格?

    一名合格的UiPath开发人员究竟需要具备什么核心技能?业务梳理?沟通技巧?VB.net吗?VBA吗?Python?还是SQL?出于多种原因,关于这一点总是众说纷纭,莫衷一是.尽管这些技术都算沾边,但 ...