程序开发中,编程人员经常要面对的是如何编写代码来响应错误事件的发生,即例外处理(exception handlers)。如果例外处理代码设计得周全,那么最终呈现给用户的就将是一个友好的界面。否则,就会让访问者对莫名的现象感到真正的“意外”。

例外处理:当JavaScript程序在运行中发生了诸如数组索引越界、类型不匹配或者语法错误时,JavaScript解释器就会引发例外处理。ECMAScript定义了六种类型的错误,除此之外,我们可以使用Error对象和throw语句来创建并引发自定义的例外处理信息。

例外处理技术的优点:通过运用例外处理技术,我们可以实现用结构化的方式来响应错误事件的发生,让例外处理代码与正常脚本代码科学分离,最终使我们能够集中精力编写完成主要功能的核心程序。

// 如下,如果我们这样写:

console.log(i);

var a = 6;

console.log(++a);

// 因为i未定义 出现错误 那么js就卡在这里了 我们预期的输出a的结果也不执行了。

  

// 如果 我们使用try catch:

        try {
            console.log(i);
        }catch(e) {
           console.log(e)
        }         var a = 5;
        console.log(++a); // 那么,i未定义的错误被捕获掉了,程序仍能继续运行下去,最后输出a
// 使用 try...catch...finally 语句来执行 try {
  // 此处是可能产生例外的语句
  } catch(error) {
  // 此处是负责例外处理的语句
  } finally {
  // 此处是出口语句(当没有执行catch时不会触发)故try...catch比较常见
  }
// 我们可以自定义抛出错误,比如我们想检验一个值:

var user = 'SpongeBob';

try {
if(user != 'SpongeBob') { throw new Error('用户名错误'); }
}catch(e) {
console.log(e.message) // 在这里可以捕获到自定义的错误
}

例外表现形式:Error对象

在JavaScript,例外是作为Error对象出现的。Error对象有两个属性:name属性表示例外的类型,message属性表示例外的含义。根据这些属性的取值。

Error.name的取值一共有六种,如下:

  Error:()的使用与定义不一致
  RangeError:数值越界
  ReferenceError:非法或不能识别的引用数值
  SyntaxError:发生语法解析错误
  TypeError:操作数类型错误
  URIError:URI处理函数使用不当

最新文章

  1. KOTLIN开发语言文档(官方文档) -- 2.基本概念
  2. WinForm 对Web Api 增 册 改 查 的基本操作
  3. (翻译)《Hands-on Node.js》—— Introduction
  4. C#正则表达式Regex常用匹配
  5. Sharepoint添加顶部导航菜单
  6. Android课程---String、StringBuffer 、StringBuilder 的区别(转)
  7. 【云计算】docker build如何支持参数化构建?
  8. Cocos2d-x 3.x项目创建
  9. excel列显示形式互换(字母与数字)
  10. C++实现链栈的基本操作
  11. HDU 3315 My Brute(费用流)
  12. win8/win10/win2012r2 存储池 冗余分析
  13. UVA - 208 Firetruck(消防车)(并查集+回溯)
  14. Linux下一些命令
  15. Redis数据类型之ZSet(五)
  16. DOM元素的Attribute(特性)和Property(属性) 【转载】
  17. SpringBoot+gradle项目构建war
  18. WebService调用SSAS教程
  19. [二分答案][NOIP2015]跳石头
  20. 跟厂长学PHP7内核(七):常见变量类型的基本结构

热门文章

  1. Codeforces - 1194D - 1-2-K Game - dp
  2. 32.Group Anagrams(相同元素的不同组合)
  3. Ajax异步请求返回文件流(eg:导出文件时,直接将导出数据用文件流的形式返回客户端供客户下载)
  4. ActiveMQ修改端口号
  5. 系统调用的API以及汇编代码实现
  6. openstack创建一个虚拟机的过程
  7. python wxpython
  8. python3输出中文报错的原因,及解决办法(基于pycharm)
  9. 使用Fiddler为满足某些特定格式的网络请求返回mock响应
  10. MySQL提示:too many connections