JavaScript Error对象详解

时间: 2018-06-25阅读: 1727标签: 对象

一、概念

error,指程序中的非正常运行状态,在其他编程语言中称为“异常”或“错误”。解释器会为每个错误情形创建并抛出一个Error对象,其中包含错误的描述信息。

ECMAScript定义了六种类型的错误。除此之外,还可以使用Error构造方法创建自定义的Error对象,并使用throw语句抛出该对象。

六种错误:

  • ReferenceError:找不到对象时
  • TypeError:错误的使用了类型或对象的方法时
  • RangeError:使用内置对象的方法时,参数超范围
  • SyntaxError:语法写错了
  • EvalError:错误的使用了Eval   
  • URIError:URI错误

 

二、错误处理

即使程序发生错误,也保证不异常中断的机制。

try{
    可能发生错误的代码
}catch(err){
    只有发生错误时才执行的代码
}finally{
    无论是否出错,肯定都要执行的代码
}


使用要点:

  • 使用try包裹的代码,即使不出错,效率也比不用try包裹的代码低;
  • 在try中,尽量少的包含可能出错的代码;
  • 无法提前预知错误类型的错误,必须用try catch捕获;
  • finally可以省略;

 

三、抛出自定义错误

何时:如果函数的定义者,需要告知调用者使用过程中的错误;

如何:throw new Error("提示文字");

// 程序猿甲:定义函数的人
function round(num, d){
    if(!isNaN(num) && !isNaN(d)){
        num *= Math.pow(10, d);
        return num;
    }else{
        // 抛出自定义错误
        throw new Error("参数必须是数字");  
    }
}

// 程序猿乙:调用函数的人
var d = parseInt(prompt('请输入数字'));
try{
    alert(round(123.456, d));
}catch(err){
    alert(err.message);  // 接住抛出的自定义错误
}


 

四、实例练习

var n = 1;
function fun(){
    try{
        n++;
        return n;
    }catch(err){    
        // 没错误,catch不执行
        n++;
        return n;    
    }finally{
        n++;
        return n;
    }
}

console.log(fun());// 3  return为finally的
console.log(n);// 3


var n = 1;
function fun(){
    try{
        n++;
        return n;
    }catch(err){
        // 没错误,catch不执行
        n++;
        return n;
    }finally{
        n++;
    }
}
console.log(fun()); // 2  return为try的
console.log(n); // 3


 

var n = 1;
function fun(){
    try{
        n++;
        n += m;  //出错
        return n;   
    }catch(err){
        n++;
        return n;
    }finally{
        n++;
    }
}
console.log(fun());    // 3 return为catch的
console.log(n);        // 4


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

链接: http://www.fly63.com/article/detial/892

js中Object.create vs new Function() 的区别

之前学习JavaScript 权威指南,说以后在JavaScript建立对象请使用Object.create() 尽量少使用 new Function() .这两个新建对象的方法到底有什么不同呢?new 方式实现方式,实际上是先新建了一个Object对象,再用这个对象继承至Base,最后再绑定this.

js如何合并两个对象?

如何使用js将两个对象合并成一个对象呢?Object.assign() 方法用于将所有可枚举属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

JavaScript Blob 对象解析

Blob是JavaScript内建对象,表示不可变的原始数据,类似文件的对象。blob是表示原始数据的不可变对象,这些数据不一定是javascript原生格式的,文件接口基于Blob,继承Blob功能并将其扩展为支持用户系统上的文件。

javascript如何判断对象是否相等?

JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕。下面我们就来看一下如何判断对象是否相等。

js基础_究竟什么是变量对象,什么是活动对象?

在写程序的时候会定义很多变量和函数,那js解析器是如何找到这些变量和函数的?变量对象是与执行上下文对应的概念,在执行上下文的创建阶段,它依次存储着在上下文中定义的以下内容:函数的所有形参、所有函数声明、所有变量声明

深入理解js对象中数据属性和访问器属性

创建对象的方式有两种:第一种,通过new操作符后面跟Object构造函数,第二种,对象字面量方式。两种方式创建出来的对象是一样的,有相同的属性和方法。这些属性内部都有描述其行为的属性描述符。

js判断对象是否为空对象,判断对象中是否有某属性

判断一个对象是否为空对象,本文给出三种判断方法,断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。

JavaScript中的map()和forEach()有什么区别?

JavaScript中一些最受欢迎的功能可能是map和forEach。从ECMAScript 5(简称es5)开始,它们就开始存在了。在本文中,我将讨论它们之间的主要区别,并向你展示其用法的一些示例。

比较 JavaScript 对象的四种方式

比较 JavaScript 中的原始值非常简单。只需使用任何一种可用的相等运算符即可,例如严格相等运算符:但是对象却有结构化数据,所以比较起来比较困难。

FormData对象的使用

FormData类型是XMLHttpRequest 2级定义的,它是为序列化表以及创建与表单格式相同的数据提供便利。 作用:1.利用一些键值对来模拟一系列表单控件:即将form中的所有表单元素的name和value组装成一个queryString;2.异步上传二进制文件。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!