JavaScript中的错误类型

@(javascript)[JavaScript错误处理]
[toc]

作为一个程序员,需要的不仅仅是技术,更是需要在遇到错误的时候对错误的处理能力。就前端而言,技术一直在更新,但是JavaScript中的错误也就是那么几个。掌握不同的报错信息会让你的实际开发事半功倍。

JavaScript中的错误类型

  • Error
  • EvalError
  • RangeError
  • ReferenceError
  • SyntaxError
  • TypeError
  • URIError

Error

Error是最基本的错误类型,其他的错误类型都继承自该类型。因此,所有错误的类型共享了一组相同的属性。
这个类型的错误很少见。一般使用开发人员自定义抛出的错误。

EvalError

这个错误会在使用eval()函数发生异常时候抛出。两种情况会出错:

  1. new eval();
  2. eval = foo;
    上面两个的意思结合就是没有直接调用eval函数,而是new或者是重新赋值
    这个错误基本上不会遇到,因为eval函数本来用的就不多。不过需要注意的是,eval是一个关键字。

RangeError

这个错误会在数值超出相应范围时触发。比如使用new Array()的时候传递一个负数或者是超过数组最大长度(4,294,967,295)的数,比如Number.MAX_VALUE,Number.MIN_VALUE。注意递归爆炸也有这个错误。

ReferenceError

这个错误一般就是出现在变量找不到的情况,比如:

var a = b;
Uncaught ReferenceError: b is not defined

这时候就需要检查一下一个变量了

SyntaxError

当Javascript语言解析代码时,Javascript引擎发现了不符合语法规范的tokens或token顺序时抛出SyntaxError。

TypeError

这个错误在JavaScript中是经常遇到的,不管是初学者还是老手。在变量中保存着以外的类型时,或者在访问不存在的方法时。都会导致这种错误。但是归根结底还是由于在执行特定于类型的操作时,变量的类型并不符合要求所致。比如:

var o = new 10;
a.style.widht = "10px";

关于设置样式这个东西,新手会遇到很多,一般这都是由获取不到元素导致的。

URIError

在使用encodeURI或者decodeURI因为URL格式不正确时,就会导致URIError错误。这种错误也很少见。

使用try-catch进行错误处理

try-catch是一个错误处理的方法。使用法法是:

try {
    // 尝试执行的代码
} catch(error) {
    // 如果上市执行的代码不成功则执行这段代码
}

代码中 catch语句的error不能省略。
在自己不能把我是否会出错的地方使用try-catch语句能让代码运行的更舒服。try-catch语句其实还有一句finally语句:

try {
    // 尝试执行的代码
} catch(error) {
    // 如果上市执行的代码不成功则执行这段代码
} finally {
    // finally的语句始终都会执行
}

因为finally语句使用会执行,所以我们一般都不会使用 finally语句。

抛出错误

在使用try-catch语句时发生错误我们可以执行其他事情或者是抛出这个错误。抛出错误使用throw操作符。

try {
    alert(a)
} catch(error){
    throw new Error("a is not defined")
}

上面的代码就会抛出一个一般的错误:Uncaught Error: a is not defined。具体抛出什么错误根据实际情况确定。类型就是上面的那几种错误类型。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,687评论 0 13
  •   由于 JavaScript 本身是动态语言,而且多年来一直没有固定的开发工具,因此人们普遍认为它是一种最难于调...
    霜天晓阅读 871评论 0 1
  • 注:本文最后更新时间:2017/03/06 前言:最近在重新翻看《你不知道的 JavaScript 》,在作用域一...
    卿可津阅读 976评论 0 0
  • 0. 写在前面 当你开始工作时,你不是在给你自己写代码,而是为后来人写代码。 —— Nichloas C. Zak...
    康斌阅读 5,574评论 1 42
  • 忙碌了一上午,下午练完钢笔字,就迫不及待翻开《自控力》这本跟意志力有关的书。看完书本前言,回想自己以前的经历,然后...
    石阶上的青苔阅读 224评论 1 3

友情链接更多精彩内容