这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战
每个前端开发都会用到浏览器调试,有了这个调试,我们可以更好的找到问题并解决问题。我们主要讲错误处理。
try/catch语句是js处理异常的一种方式,它非常好理解,try里面是写我们的代码,catch是我们try中的代码如果出错怎么显示报错。
try {
//内容
} catch (error){
console.log(error,'xxx')
};
如果try内容中有代码发生错误的话,直接就会跳出执行运行catch中的内容。我们试想一下,一个代码块写一个这样方法,这样我们找错就特别容易,尤其是多人开发同一项目。
finally子句是try/catch中的可选内容,在前面说到如果写在try的内容出错了,会直接跳出并执行catch中内容。
加上finally子句的话,如果try内容无报错,则继续执行finally中内容。
如果try内容出错,先执行catch内容,然后执行finally内容,就算是return也不能阻止finally执行。
try {
bear //报错 未定义
} catch (error){
console.log(error,'xxx')
} finally {
console.log('jackson')
};
这个有点像promise,我感觉还是很好理解的。
注意:当我们使用try/catch方法的时候,浏览器会认为错误被处理了。它很像php里的@ 屏蔽错误。这样只有我们程序开发者才能知道错误,用户是不知道的。
一、Error
Error
是基类型,其他错误类型都是继承该类型,主要用于自定义错误类型
二、InternalError
InternalError
类型的错误会在底层JavaScript
引擎抛出异常时由浏览器抛出.例如,递归过多导致了栈溢出.这类型并不是代码中通常要处理的错误。
三、EvalError
EvalError
类型错误会在使用eval()函数发生异常时抛出 基本上,只要不把eval()
当成函数调用就会报错
四、RangeError
RangeError
会在数值越界时抛出.例如,定义数组时如果设置了不支持的长度,如-20.又或者没有给递归设置停止条件时触发.
五、ReferenceError
ReferenceError
会在找不到对象时发生.(”object expected”浏览器错误的原因).这种错误经常是由访问不存在的变量而导致
六、SyntaxError
在给eval()传入的字符串包含JavaScript
语法错误时发生
七、TypeError 类型错误 在给函数传参前没有验证的情况下,错误频繁发生
八、URIError 路径错误
throw是我们自定义抛出错误。throw必须有一个值,但值是什么不限制。
function err(){
throw new TypeError('我是jackson')
}
err();
使用throw,代码会立即停止并抛出我们传入的值。我们可以像我代码中定义自定义错误类型。