js基础——错误处理
一:错误捕获
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基础——错误处理的更多相关文章
- js基础篇——call/apply、arguments、undefined/null
a.call和apply方法详解 call方法: 语法:call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 定义:调用一个对象的一个方法,以另一个对象替换当前对象 ...
- Web3D编程入门总结——WebGL与Three.js基础介绍
/*在这里对这段时间学习的3D编程知识做个总结,以备再次出发.计划分成“webgl与three.js基础介绍”.“面向对象的基础3D场景框架编写”.“模型导入与简单3D游戏编写”三个部分,其他零散知识 ...
- JS基础--函数与BOM、DOM操作、JS中的事件以及内置对象
前 言 絮叨絮叨 这里是JS基础知识集中讲解的第三篇,也是最后一篇,三篇JS的基础,大多是知识的罗列,并没有涉及更难得东西,干货满满!看完这一篇后,相信许多正在像我一样正处于初级阶段的同学, ...
- js基础--javaScript数据类型你都弄明白了吗?绝对干货
欢迎访问我的个人博客:http://www.xiaolongwu.cn 数据类型的分类 JavaScript的数据类型分为两大类,基本数据类型和复杂数据类型. 基本数据类型:Null.Undefine ...
- 前端面试题目汇总摘录(JS 基础篇)
JS 基础 JavaScript 的 typeof 返回那些数据类型 object number function boolean undefined string typeof null; // o ...
- js基础梳理-如何理解作用域和作用域链?
本文重点是要梳理执行上下文的生命周期中的建立作用域链,在此之前,先回顾下关于作用域的一些知识. 1.什么是作用域(scope)? 在<JavaScritp高级程序设计>中并没有找到确切的关 ...
- 原生JS 基础总结
0. 好习惯 分号 ; 花括号 {}, var 弄清楚 null , undefined 区别 , isNaN, === 与 == 区别 1. prompt , confirm , alert 不同框 ...
- GSAP JS基础教程--TweenLite操作元素的相关属性
今天来学习用TweenLite操作元素的各种属性,以Div为例,其他元素的操作也是一样的,只是可能一些元素有它们的特殊属性,就可能不同罢了. 代码里用详细注释,我就不再重复啦,大家看代码就可以啦! ...
- 进击Node.js基础(二)
一.一个牛逼闪闪的知识点Promise npm install bluebird 二.Promise实例 ball.html <!doctype> <!DOCTYPE html> ...
随机推荐
- CentOS 7 离线环境安装nginx时报错:./configure: error: C compiler cc is not found
先说解决方法: 在nginx目录下,查看objs/autoconf.err文件,该文件记录了具体的错误信息 vi objs/autoconf.err 一般就是缺少一些文件,因为我的gcc.g++也是离 ...
- 自定义Metadata验证属性
一.定义 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys ...
- springcloud Config 入门,带视频
疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 前言 Crazy ...
- Linux ipv6 无状态 设置为 eui64
Linux ipv6 无状态 设置为 eui64 转载注明来源: 本文链接 来自osnosn的博客,写于 2019-08-22. 无状态的ipv6有eui64和stable-privacy模式, 在家 ...
- nginx和swoole怎么混合使用
有需要学习交流的友人请加入交流群的咱们一起,有问题一起交流,一起进步!前提是你是学技术的.感谢阅读! 点此加入该群jq.qq.com 基于epoll的Nginx 有了epoll,理论上1个进程就可以 ...
- IPFS学习-DNS链接
DNSLink 什么是DNS链接 DNS链接使用DNS TXT记录映射域名(如ipfs.io)到一个IPFS地址.因为你可以编辑自己的DNS记录,可以使他们总是指向最新版本的IPFS中的对象(如果修改 ...
- 关于c#winform用sharpGL(OpenGL)绘制不出图形,绘制窗口是个黑框的坑
原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11790309.html 在c++的opengl中可能是因为是最基本的库,很多东西都把你做好了 ...
- git常用情景和基础命令
git常用情景和基础命令 将项目克隆到本地 --xxx是git的地址 git clone xxxx 或者初始化git(github提供滴) --新建一个readme.md文件 echo "# ...
- logback日志文件位置动态指定
logback日志文件位置动态指定 参考:https://stackoverflow.com/questions/19518843/logback-configuration-via-jvm-argu ...
- Ligg.WinOa-000: Windows运维自动化编程实战--前言
本开源项目Ligg.WinOa是一个基于Ligg.EasyWinApp的Windows运维自动化应用.通过Ligg.EasyWinForm生成2个功能界面:管理员工具箱和用户工具箱:通过Lig ...