七、错误处理

147 阅读1分钟

可读性:★★★★✰ 理解难度:★★★✰✰

概述

错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。

在本章中,将列出编写既整洁有强固的代码,雅致地处理错误代码的一些技巧和思路。

一、try...catch...finally...

try
{
   //在此运行代码
}
catch(err)
{
   //在此处理错误
}
finally {
    finallyCode - 无论 try / catch 结果如何都会执行的代码块
}
function myFunction() {
    var message, x
    message = document.getElementById('message')
    message.innerHTML = ''
    x = document.getElementById('demo').value
    try {
        if (x == '') throw new Error('为空')
        if (isNaN(x)) throw  new Error('不是一个数字')
        if (x > 10) throw  new Error('太大')
        if (x < 5) throw  new Error('太小')
    } catch (err) {
        message.innerHTML = '输入的值 ' + err.message
    } finally {
        document.getElementById('demo').value = ''
    }
}

学会使用异常处理,让主业务流程和异常处理分离,使得程序的主业务流程更加清晰明了,而不需要在主业务中处理一推错误情况。

二、别返回null、undefined值

// 如果getEmployees返回null、undefined
let employees = getEmployees()
if (employees) {
    employees.forEach((item) => {
        
    })
}
​
// 如果getEmployees返回一个空数组,代码就可以变得更加简洁(不需要进行if空判断)
let employees = getEmployees()
employees.forEach((item) => {
​
})

当然,还可以使用es6的参数默认值,解决这个问题。

const traverse = (employees = []) {
    employees.forEach((item) => {
​
    })
}
​
let employees = getEmployees()
traverse(employees)

同时,也不要在调用函数时传递null、undefined值。

// 如果方法中没有处理第一个参数空指针的情况,同样会造成程序报错
someMethod(null, parameter1)

三、总结

如果将错误处理独立于主要逻辑之外,就能写出强固而整洁的代码。做到这一步,我们就能单独处理它,也可以极大地提升代码的可维护性。

本文参考《代码整洁之道》(Robert C. Martin著,韩磊译)。

浙江大华技术股份有限公司-软研-智慧城市产品研发部招聘高级前端,欢迎来撩,有意向可发送简历到chen_zhen@dahuatech.com,长期有效

上一篇:六、对象和数据结构

下一篇: 八、边界