try catch throw finally

引:看到过一篇文章说“try catch的使用,永远应该放在你的控制范围之内,而不应该防范未知的错误。如果让用户先发现你根本没预料到的错误,而不是你先发现错误,你是失职的。”

try 语句测试代码块的错误。
catch 语句处理错误。
throw 语句创建自定义错误。
finally 语句在 try 和 catch 之后无论有无异常都会执行。

  1. 首先看一个无异常情况
    clipboard.png
  2. 再来一个自定义抛出异常
    clipboard.png
    不难发现如果异常抛出之后,抛出那段之后的代码是不会执行了
  3. 程序报错抛出异常
    clipboard.png

为什么我们不用if呢?
还是上图吧,有图有真相
clipboard.png

obj.aa.bb.cc 本身已经是undefined 再往下找自然是没有dd的,此时如果是if就会报错并中断程序。而try catch不会。
若是我们要使if的判断执行下去,则需要写成if(obj && obj.aa && obj.aa.bb & &obj.aa.bb.dd),而try cacth则不需要考虑这些。


&& 和 ||

这俩的含义不用解释了吧,且和或,主要是讲用&& 和 || 来节省if else 的写法

if(a === 1){
    conosle.log('a=1')
}

可以写为 a===1 && conosle.log('a=1')

或:

if(a===1 || a === 2){
    console.log('a='+a)
}

可以写为 (a===1 || a===2) && console.log('a='+a)

赋值也是可以的 a===1 && (b=1)(a===1 ||a===2) && (b=1)
我们会经常发现一个赋值 a = b ||'' b 若为真,a=b ,否则 a = ''

if else pk switch

clipboard.png
switch 完胜

对swtch的简写

var b = [];
switch(area){
    case 2:
    b = ['重庆市', '福建省', '山东省', '内蒙古省', '上海市省']
    break;
    case 3:
    b = ['北京市', '西北省', '甘肃省', '云南省', '宁夏省', '西藏省', '青海省',]
    break;
    case 4:
    b = ['四川省', '辽宁省', '黑龙江省', '吉林省', '河北省', '山西省']
    break;
    省略......
}

明明都是给b赋值,为什么不能简单点呢?
答案当然是可以了!我是江小白,世界很简单!!

用对象的方式组装一下:
let object = {
  1: ['重庆市', '福建省', '山东省', '内蒙古省', '上海市省'],
  2: ['北京市', '西北省', '甘肃省', '云南省', '宁夏省', '西藏省', '青海省',],
  3: ['四川省', '辽宁省', '黑龙江省', '吉林省', '河北省', '山西省'],
  4: ['河南省', '江苏省', '安徽省', '广西省'],
  5: ['新疆省', '江西省', '浙江省'],
  6: ['陕西省', '辽宁省', '湖南省'],
  7: ['广东省', '贵州省', '湖北省', '河南省', '海南省', '天津市']
}
b = object[area]

如果你是规律的1234567,那么你还可以用数组哦
let arr = [
['重庆市', '福建省', '山东省', '内蒙古省', '上海市省'],
['北京市', '西北省', '甘肃省', '云南省', '宁夏省', '西藏省', '青海省',],
['四川省', '辽宁省', '黑龙江省', '吉林省', '河北省', '山西省'],
['河南省', '江苏省', '安徽省', '广西省'],
['新疆省', '江西省', '浙江省'],
['陕西省', '辽宁省', '湖南省'],
['广东省', '贵州省', '湖北省', '河南省', '海南省', '天津市']
]
 b = arr[area]

是不是感觉少写了好多代码呢,你值得拥有哦~~


木子
9 声望1 粉丝