代码如下,其中有三个if
判断,来检查数据是否符合预期,让我困惑的是,这些检查是否有必要?
我是不是应该拿掉这些判断,让其catch
自行捕获?
哪种方式更合理些?或许还有更合理的做法?
希望有人能够指点下,谢谢
async loadUserInfo() {
try {
const { data } = await getUserInfo()
if (data.status !== CONFIG.SUCCESS_CODE) {
return
}
if (!data.data.length) {
return
}
const account = util.getAccountById(data.data)
if (!account || !account.userName || !account.userPhoneNo || !account.merchantName) {
return
}
this.setState({
userName: account.userName,
userPhoneNo: account.userPhoneNo,
merchantName: account.merchantName,
})
} catch (err) {
alert('用户信息数据发生错误')
}
}
去掉检查
async loadUserInfo() {
try {
const { data } = await getUserInfo()
const account = util.getAccountById(data.data)
this.setState({
userName: account.userName,
userPhoneNo: account.userPhoneNo,
merchantName: account.merchantName,
})
} catch (err) {
alert('用户信息数据发生错误')
}
}
account如果不是空呢(
null
||undefined
)?上面和下面实现的功能不一样。下面只能说
account
没值,然后报错。但是当userName
是空串的时候,无法做出应对。Uncaught TypeError: Cannot read property 'userName' of undefined
Uncaught TypeError: Cannot read property 'userName' of null