一、错误调试和处理
1.try …catch
语法:try{
有可能导致错误的代码
}catch(错误对象){
错误信息
}finally{
不管代码对还是错,都会执行
}
优点:不会阻止下面代码的正常运行
案例1:
已知在数学中,0不能作被除数,因此num/num1显然不正确,本应该提示警告0不能作被除数,但是却弹出无穷大
案例2:
已知空(null)不能加入属性和方法
因此,控制台显示:不能设置userName
案例3:
写一个函数,打印obj的userName
但是,如果误操作,在fn()函数内写了一个null,那么就会报错!
报错就意味着:下面的所有代码都不会执行:
例如,若弹出一串1,是不会执行的
所以,报错很恐怖,比如你写了一万行代码,在第五千行出错了,那么剩下的五千行代码都将无效。因此,try …catch的作用非常大。
try …catch的运用:
案例1:
首先,一串2弹出来了。其次,错误信息是灰色的(非红色),意思就是它不会阻止代码运行。虽然33行代码有问题,但是错误信息返回到控制台了,你的代码可以正常运行。
另外:finally{}可写可不写
假如代码正确:
代码正确,那么不会执行错误(因为没有错),但是(“不管上面的代码,对还是错,都会执行”)这个语句还是会正常进行。
注:这里的e其实是个对象,已知对象有属性,有方法,那么这里有两个属性是
name(错误名称)和message(错误信息)
这个错误对象e好比js代码中的new Error
小结:
三种形式的语法都可以:
形式①:
try{
}finally{
}
形式②:(最常用)
try{
}catch(){
}
形式③:(完整一下)
try{
}catch(){
}finally{
}
}
另外:
try……catch主要是面向同事(告诉合作伙伴),而非用户。
案例:
#写一个函数,显然79行这句话是错的,现在返回error,
假如同事看不懂上面英文返回的是什么,那么可以返回中文是没问题的
因此,可以赋值给error
因此,这样的代码最基本的是不会阻止代码运行的。