异常捕获

try...catch结构:

try {
//需要捕获的代码块
} catch (e) {
console.log(e.name + ": " + e.message);
console.log(e.stack);
}

catch代码块捕获错误之后,程序不会中断,会按照正常流程继续执行下去。

错误对象e有三个最基本的属性:

name:错误名称

message:错误提示信息

stack:错误的堆栈(非标准属性,但是大多数平台支持)

注意,我们还可以多次使用catch语句捕获不同类型的错误或者异常。

try...catch...finally结构:

try...catch结构允许在最后添加一个finally代码块,表示不管是否出现错误,都必需在最后运行的语句。

try {
//需要捕获的代码块
} catch (e) {
console.log(e.name + ": " + e.message);
console.log(e.stack);
}finally{
//do something...
}

就算try语句里面有return语句,也要等到finally语句执行完毕再执行return语句。

JavaScript的原生错误类型

Error对象是最一般的错误类型,在它的基础上,JavaScript还定义了其他6种错误,也就是说,存在Error的6个派生对象。

1、SyntaxError //解析代码时发生的语法错误

2、ReferenceError //引用一个不存在的变量时发生的错误

3、RangeError //当一个值超出有效范围时发生的错误

4、TypeError //变量或参数不是预期类型时发生的错误

5、URIError //URI相关函数的参数不正确时抛出的错误

6、EvalError //eval函数没有被正确执行时,会抛出EvalError错误

抛出异常(throw语句)

throw语句的作用是中断程序执行,抛出一个意外或错误。它接受一个表达式作为参数,可以抛出各种值。

throw new Error("出错了!");
throw new RangeError("出错了,变量超出有效范围!");
throw new TypeError("出错了,变量类型无效!"); throw "Error!";// 抛出一个字符串 throw 42;// 抛出一个数值 throw true;// 抛出一个布尔值 throw {toString: function() { return "Error!"; } };// 抛出一个对象

JavaScript引擎一旦遇到throw语句,就会停止执行后面的语句,并将throw语句的参数值,返回给用户。

自定义错误

除了JavaScript内建的7种错误对象,还可以定义自己的错误对象。

function UserError(message) {
this.message = message || "默认信息";
this.name = "UserError";
} UserError.prototype = new Error();
UserError.prototype.constructor = UserError;

上面代码自定义一个错误对象UserError,让它继承Error对象。然后,就可以生成这种自定义的错误了。

使用:

throw new UserError("这是自定义的错误!");

参考:

错误处理机制 -- JavaScript 标准参考教程(alpha)

http://javascript.ruanyifeng.com/grammar/error.html

js笔记——js异常处理的更多相关文章

  1. js笔记——js数据类型转换

    以下内容摘录自阮一峰的<语法概述 -- JavaScript 标准参考教程(alpha)>章节『数据类型转换』,以做备忘.更多内容请查看原文. JavaScript是一种动态类型语言,变量 ...

  2. js笔记——js里var与变量提升

    var是否可以省略 一般情况下,是可以省略var的,但有两点值得注意: 1.var a=1 与 a=1 ,这两条语句一般情况下作用是一样的.但是前者不能用delete删除.不过,绝大多数情况下,这种差 ...

  3. js笔记——js里的null和undefined

    以下内容摘录自阮一峰的<语法概述 -- JavaScript 标准参考教程(alpha)>章节『5.null和undefined』,以做备忘. null与undefined都可以表示&qu ...

  4. 【repost】JS中的异常处理方法分享

    我们在编写js过程中,难免会遇到一些代码错误问题,需要找出来,有些时候怕因为js问题导致用户体验差,这里给出一些解决方法 js容错语句,就是js出错也不提示错误(防止浏览器右下角有个黄色的三角符号,要 ...

  5. require.js笔记

    笔记参考来源:阮一峰  http://www.ruanyifeng.com/blog/2012/10/javascript_module.html   1. 浏览器端的模块只能采用“异步加载”方式 = ...

  6. JS笔记 入门第一

    WHY? 一.你知道,为什么JavaScript非常值得我们学习吗? 1. 所有主流浏览器都支持JavaScript. 2. 目前,全世界大部分网页都使用JavaScript. 3. 它可以让网页呈现 ...

  7. js中的异常处理

    js中的异常处理语句有两个,一个是try……catch……,一个是throw. try……catch用于语法错误,错误有name和message两个属性.throw用于逻辑错误. 对于逻辑错误,js是 ...

  8. Node.js 笔记02

    一.关于命令 常用命令: dir 列出当前目录下面所有的文件 cd 目录名 进入到指定的目录,. 当前目录, .. 进入上级目录,cd . 当前目录, cd .. 上级目录 md 目录名 创建文件夹 ...

  9. 前端初学者——初探Modernizr.js Modernizr.js笔记

    什么是Modernizr? Modernizr 是一个用来检测浏览器功能支持情况的 JavaScript 库. 目前,通过检验浏览器对一系列测试的处理情况,Modernizr 可以检测18项 CSS3 ...

随机推荐

  1. Android数据库安全解决方案,使用SQLCipher进行加解密

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11952409 我们都知道,Android系统内置了SQLite数据库,并且提供了一 ...

  2. 爱上WPF,努力才会有希望!

    从WinForm转向WPF开发已经有两个多月了,通过不断深入地学习与运用,现在是越来越爱它了.它实在是太强大了.运用WPF,你不仅可以做Win界面,也可以很快转向Web开发,因为Silverlight ...

  3. liunx 多个tomcat 产生的新问题

    今天在给 tomcat 版本7.0.57升级到7.0.72的时候,碰到一个奇怪的问题,启动 tomcat7.0.72 的时候报错,找不到tomcat7.0.57/bin/setclasspath.sh ...

  4. Tomcat如何配置环境变量

    1, JDK:版本为jdk-7-windows-i586.exe 下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index ...

  5. Lisp 函数

    (quote x) [返回x] >>>>>>>>>>>>>>>>>>>>> ...

  6. 最新Ubuntu10.10 更新源

    Ubuntu10.10这个版本真的很老了,官方N多年前早已不再支持更新软件源了. 目前可用的有中科大镜像更新源. 中科大Ubuntu 10.10源列表: deb http://mirrors.ustc ...

  7. Mac 问题

    1.mac siri有什么用? 语音功能,感觉用处不是特别大 2.mac iphone 复制粘贴 没找到该怎么做. 3.icloud dirver 类似dropbox,不过网络应该不太好,不靠谱.

  8. 解决ViewPage中嵌套有ListView或者滑动手势等造成滑动的冲突

    public class ViewPagerCompat extends ViewPager { //mViewTouchMode表示ViewPager是否全权控制滑动事件,默认为false,即不控制 ...

  9. poj 1195 - Mobile phones(树状数组)

    二维的树状数组,,, 记得矩阵的求和运算要想好在写.... 代码如下: #include <cstdio> #include <cstdlib> #include <cm ...

  10. Android 自定义View 总结

    Android系统本身给我们提供十分丰硕的组件让我们实现包罗万象的UI效果,与此同时,我们也能够非常方便实现各种方法来实现各种强大的功能.通过继承现有的UI控件,我们也能够拓展现有的功能.我们也能够完 ...