js的异常处理方法.pdfVIP

  • 31
  • 0
  • 约8.6千字
  • 约 8页
  • 2017-07-05 发布于天津
  • 举报
js的异常处理方法.pdf

j s 的异常处理⽅法 考虑到 JS 中的错误可⽐服务器端的代码产⽣的错误要多得多,并且还难以发现及修 正, 以 JS 代码必须有异常处理以及全局⼀场处理。 try { //这段代码从上往下运⾏,其中任何⼀个语句抛出异常该代码块就结束运⾏ } catch (e) { // 如果try代码块中抛出了异常,catch代码块中 代码就会被执⾏。 //e是⼀个局部变量,⽤来指向Error对象或者其他抛出 对象 } finally { //⽆论try中代码是否有异常抛出 (甚⾄是try代码块中有return语句),fina } ⼀:Error属性 Error有两个基本的属性 name 和 message 。message⽤来表⽰异常的详细信息。⽽ name指的是Error对象的构造函数。此外,不同的j s引擎对Error还各⾃提供了⼀些扩 展,例如mozilla提供了fileName (异常出现的⽂件名称)和linenumber (异常出现的⾏ 号)的扩展,⽽IE提供了number (错误号)的⽀持。不过name和message是两个基本的 属性,在firefox和ie 中都能够⽀持。 ⼆:Error类型 Javascript 中Error还有⼏个⼦类EvalError ,RangeError ,ReferenceError ,SyntaxError , TypeError ,URIError , EvalError :错误发⽣在eval ) 中 SyntaxError :语法错误,错误发⽣在eval ) 中,因为其它点发⽣SyntaxError会 ⽆法通过解释器 RangeError :数值超出范围 ReferenceError :引⽤不可⽤ TypeError :变量类型不是预期的 URIError :错误发⽣在encodeURI )或decodeURI ) 中 三:全局异常处理 j avascript的window对象有⼀个特别的属性onerror ,如果你将某个function赋值给 window的onerror属性,那么但凡这个window 中有j avascript错误出现,该function都会 被调⽤,也就是说这个function会成为这个window的错误处理句柄。不过,需要注意 的是,我们需要让下⾯这段代码成为⽂件中的第⼀⾏代码: window .onerror = function msg , url , line) { return true; } onerror句柄会3个参数分别是错误信息提⽰,产⽣错误的j avascript的document ulr ,错 误出现的⾏号。 onerroe句柄的返回值也很重要,如果句柄返回true ,表⽰浏览器⽆需在对该错误做额 外的处理,也就是说浏览器不需要再显⽰错误信息。⽽如果返回的是false ,浏览器还 是会提⽰错误信息。 前端⼯程师都知道 JavaScript 有基本的异常处理能⼒。我们可以 throw new Error(),浏览器也会在我们调⽤ API 出错时抛出异常。但估计 绝⼤多数前端⼯程师都没考虑过收集这些异常信息。反正只要 JavaScript 出错后刷新不复现,那⽤户就可以通过刷新解决问题,浏览器不会崩 溃,当没有发⽣过好了。这种假设在 Single Page App 流⾏之前还是成⽴ 的。现在的 Single Page App 运⾏⼀段时间后状态复杂⽆⽐,⽤户可能进 ⾏了若⼲输⼊操作才来到这⾥的,说刷新就刷新啊?之前的操作岂不要 完全重做? 以我们还是有必要捕获和分析这些异常信息的,然后我们 就可以修改代码避免影响⽤户体验。 捕获异常的⽅式 我们⾃⼰写的 throw new Error() 想要捕获当然可以捕获,因为我 们很清楚 throw 写在哪⾥了。但是调⽤浏览器 API 时发⽣的异常就不⼀ 定那么容易捕获了,有些 API 在标准⾥就写着会抛出异常,有些 API 只 有个别浏览器因为

文档评论(0)

1亿VIP精品文档

相关文档