Javascript 语法补充(错误处理)

简要说说JS中的错误处理对象与方式

Posted by QY on March 5, 2019

前言

虽然这一篇文章讲的属于JS中的基础语法,但是少了它似乎也不会影响代码的运行

但是对于一个追求精致,立志于让程序在任何情况下都不会轻易奔溃的程序员,错误处理机制还是必不可少的~

这篇只是对JS基础语法的补充所以就不会很长咯

错误处理机制

try-catch语句
try{

}catch(err){

}finally{

}

finally子语句是可选的,且必定执行,无论catch语句有没有执行

当有finally存在时,trycatch中的return会失效

  • 错误类型

    1. Error

      基本错误类型,其他错误类型都继承自该类型

    2. EvalError

      当没有把eval当做函数调用时会抛出EvalError错误

    3. RangeError

      当超出数组范围或者值不合法时会抛出RangeError

    4. ReferrenceError

      当对象找不到时会抛出ReferenceError

    5. SyntaxError

      当eval中执行的代码有语法错误时会抛出SyntaxError,如果在外部有语法错误会直接停止执行一般不会抛出此错误

    6. TypeError

      当实际变量类型与预期不一致时会抛出TypeError, 如让一个新创建的普通对象调用数组中的forEach方法时

    7. URLError

      当使用decodeURLencodeURL中的url格式错误时会抛出URLError

  • try-catch相配合的还有throw操作符

    当遇到throw操作符时代码会停止运行,只有当try-catch捕获到时才会继续运行 抛出错误类型的实例时能够更加真实的模拟浏览器错误

自定义错误

通过原型链继承可以自定义错误类型,只要继承自error的对象都会被浏览器当做错误对象处理

当自定义错误时需要为新错误类型指定namemessage属性

try {
    var udError = new Error();
    udError.name = "undefined Error";
    udError.message = "throw undefined Error";
    throw udError;
} catch(e) {
    console.log(e)  //undefined Error: throw undefined Error
}