1. try catch
try {
// 正常执行
} catch(err) {
// 开发者认为可能出错的 (如网络连接失败、函数少了条件...)
}
try catch的使用,应永远在“你”的控制范围内,你很清楚这里是有可能出错的(如ajax请求时,有可能网络没有连接导致超时...)trycatch是为了让程序不崩溃,同时开发者可以捕获到异常并加以逻辑处理,使程序得以继续运行下去。
应用场景
- 浏览器兼容性
也就是兼容性场合,因为浏览器兼容性不是程序员能改正的,所以只能try catch:由于不同浏览器的报错提示是不一样的,根据捕获的浏览器的报错提示判断用户的浏览器,然后做出对应的措施,这时候使用try catch是巧妙的办法,如果用if就比较笨拙,因为if通常只能反馈真或假,不能直接反馈浏览器的报错内容。
- 判断代码非法性
可能你会想到用 if 去判断代码,但这其实是不同的。
假设你要判断 obj.student.info.name == 'xxx', 如果用if判断,你需要逐层确定每个属性是否存在,假设info并不存在,你直接写obj.student.info.name已经是报错的了,因此用if的话,你需要更多的if去判断每层是否存在。
但try catch就可以直接捕获到这个异常并将其抛出给你,你可以对异常做处理,程序不会崩溃
- 捕获到异常,还能“挽回”,换条路走
你可以在catch里面“换一条逻辑走”,让程序得以不崩溃,可以继续按你的逻辑往下执行。
- “体面退出”
你可以在catch里 alert或者在使用插件库的情况下$message ,弹个框告诉用户不好意思出了点问题。如果是用户的错告诉他那里操作错误了, 如果是程序的错,道歉!