前言
虽然这一篇文章讲的属于JS中的基础语法,但是少了它似乎也不会影响代码的运行
但是对于一个追求精致,立志于让程序在任何情况下都不会轻易奔溃的程序员,错误处理机制还是必不可少的~
这篇只是对JS基础语法的补充所以就不会很长咯
错误处理机制
try-catch语句
try{
}catch(err){
}finally{
}
finally
子语句是可选的,且必定执行,无论catch
语句有没有执行
当有finally
存在时,try
与catch
中的return
会失效
-
错误类型
-
Error
基本错误类型,其他错误类型都继承自该类型
-
EvalError
当没有把eval当做函数调用时会抛出
EvalError
错误 -
RangeError
当超出数组范围或者值不合法时会抛出
RangeError
-
ReferrenceError
当对象找不到时会抛出
ReferenceError
-
SyntaxError
当eval中执行的代码有语法错误时会抛出
SyntaxError
,如果在外部有语法错误会直接停止执行一般不会抛出此错误 -
TypeError
当实际变量类型与预期不一致时会抛出
TypeError
, 如让一个新创建的普通对象调用数组中的forEach
方法时 -
URLError
当使用
decodeURL
和encodeURL
中的url格式错误时会抛出URLError
-
-
与
try-catch
相配合的还有throw
操作符当遇到
throw
操作符时代码会停止运行,只有当try-catch
捕获到时才会继续运行 抛出错误类型的实例时能够更加真实的模拟浏览器错误
自定义错误
通过原型链继承可以自定义错误类型,只要继承自error
的对象都会被浏览器当做错误对象处理
当自定义错误时需要为新错误类型指定name
与message
属性
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
}