前言
异常处理运行在浏览器端Javascript受宿主环境、浏览器插件、运营商劫持、第三方代码等等因素的影响导致,javascript在浏览器端出现各种各样的异常情况。
Error对象及其衍生对象
Error对象有两个最基本的属性:
- name:错误名称
- message:错误提示信息
除了Error对象,JavaScript还定义了其他6种错误,即存在Error的6个衍生对象
- EvalError:执行代码时发生的错误
- RangeError:当一个数值型变量或参数超出有效范围时发生的错误
- ReferenceError:引用一个不存在的变量时发生的错误
- SyntaxError:解析代码时发生的语法错误
- TypeError:变量或参数的类型无效时发生的错误
- URIError:向encodeURI() 或者 decodeURI() 传入无效参数时发生的错误
捕获异常及其处理
方式一:用try语句捕获必要异常
1 2 3 4 5 6 7 8 9 10 11 |
try { fn(); } catch(e) { alert(e.message); //e.stack 函数调用堆栈 } finally { other(); } |
try…catch语句允许最后有一个finally代码块,表示不管是否出现错误,最后都会运行finally的语句。
方式二:如果没有异常的捕获可以通过监听window.onerror来处理异常
window.onerror 讲接收3个参数:
- msg:错误描述,比如:a is not defined
- url:出错脚本所在的url
- lineNumber:出错脚本的行数
throw语句的作用是中断程序执行,抛出一个意外或错误。它接受一个表达式作为参数。
throw可以接受各种值作为参数。JavaScript引擎一旦遇到throw语句,就会停止执行后面的语句,并将throw语句的参数值,返回给用户。
如果只是简单的错误,返回一条出错信息就可以了,但是如果遇到复杂的情况,就需要在出错以后进一步处理。这时最好的做法是使用throw语句手动抛出一个Error对象。
xiexie!!
我是来打酱油的