一:try...catch...finally
try {
//可能出错的代码
}catch (error){
//出错时要做什么
}
任何可能出错的代码都应该放到try中,而处理错误的代码则应该放到catch里面。如果try代码块中的代码出现错误,代码会立即退出执行,并跳到catch代码块中。catch中此时街道一个对象,对象中包含发生错误的相关信息。
try {
//可能出错的代码
}catch (error){
//出错时要做什么
}.finally{
//无论出错还是不会出错都会执行
}
finally里面的代码永远都会执行
try catch的缺点
1.消耗性能 2.捕获不到异步错误 3.可能会导致报错点更模糊
二:throw
用于在任何时候抛出自定义错误。throw操作入必须有一个值,但是值的类型不限。
比如:throw:123 throw:‘adw’ throw:true...
使用 throw操作符时,代码立即停止执行。除非try/catch语句捕获到错误。
可以通过内置的错误类型来欧尼浏览器错误。每种错误类型的构造函数都只接受一个参数,就死错误消息。
throw new Error("something bad happened")
自定义错误常用的错误类型是Error,RangeError,ReferenceError,TypeError
三:Error
代码执行过程中会发生各种类型的错误。
已知八种错误类型。
1.Error:基类型,其他错误类型继承该类型。
2.InternalError:底层javascript引擎抛出异常的时候由浏览器抛出。
3.EvalError:错误的使用Eval()函数时抛出。
4.RangeError:会在数值发生越界的时候抛出。
5.ReferenceError:会在找不到对象的时候发生。
6.SyntaxError:经常在给eval()传入的字符串中包含js语法错误的时候发生。
7.TypeError:会发生在变量不是预期的类型,或者访问不存在的方法.
8.URIError:只会在使用encodeURI()和decodeURI()但传入了格式错误的URI的时候发生。