try catch
try { //正常执行 } catch (err) { //你感觉会出错的 错误类型 // 可能出现的意外 eg:用户自己操作失误 或者 函数少条件 不影响下面的函数执行 // 有时也会用在 比如 focus() 但可恶的ie有可能会第一次没有focus事件 再让他执行一次 // 有时一些不是bug的bug 在ie上 他要求必须加上 catch 哪怕就一个空catch }
try catch的使用场景
1. 浏览器兼容,根据捕获的浏览器的报错提示判断用户的浏览器,然后做出对应的措施
2. 做非法判断,其中最多的场合便是json.a.b.c类型的变量判断,不关心json.a或json.a.b或json.a.b.c哪步出错,只捕获错误,且程序不会报错坏掉
try catch示例
try { Utils.simpleMsg('服务器时间获取失败'); console.log('try') //不执行 } catch (err) { console.log('服务器时间获取失败'); //执行 }
<body> <input type="button" value="View message" onclick="message()" /> <script type="text/javascript"> var txt = "" function message() { try { console.log('前') //输出 adddlert("Welcome guest!") console.log('后') //未输出 } catch (err) { txt = "此页面存在一个错误。\n\n" txt += "错误描述: " + err.description + "\n\n" txt += "点击OK继续。\n\n" alert(txt) //弹出 } } </script> </body>
// 控制台正常 try { window.a.b.c !== 2; } catch (err) { console.log(err) //TypeError: Cannot read property 'b' of undefined alert(err) // 可执行 } // 控制台报红 if (window.a.b !== 2) { alert("error") // 不执行 } alert(123); // 不执行