首页 > 其他分享 >兜底数据方法封装(依赖于get方法或递归)

兜底数据方法封装(依赖于get方法或递归)

时间:2024-12-20 11:28:02浏览次数:5  
标签:兜底 封装 val get 代码 current defaultVal

编写代码时进行兜底是为了处理异常情况和错误。兜底是指在代码中添加适当的处理逻辑,以防止程序在遇到异常情况时崩溃或产生不可预料的结果。

以下是进行兜底的几个原因:

  1. 异常情况处理:在编写代码时,可能会遇到各种意外情况,例如输入无效数据、网络连接中断、文件读取错误等。为了保证程序的稳定性和可靠性,需要添加兜底处理逻辑,用于捕获并处理这些异常情况。

  2. 提高代码的容错性:兜底可以帮助我们尽可能地避免代码运行时的错误。通过添加适当的错误处理代码,可以减少代码中的漏洞和易出错的地方,提高代码的容错性。

  3. 用户友好性:在用户界面设计中,兜底可以提供更好的用户体验。通过在代码中添加错误提示或异常处理,可以向用户提供有意义的错误信息,帮助他们理解问题所在并采取相应的措施。

  4. 数据完整性保护:在处理数据时,兜底可以帮助我们确保数据的完整性和一致性。例如,在进行数据库操作时,如果出现错误或异常情况,通过兜底处理,可以进行回滚操作,确保数据不会被破坏或丢失。


function simpleGet(obj: any, key: string, defaultVal: any): any {
    const keys = key.split('.');
    let current = obj;
    for (const k of keys) {
        if (current === null || typeof current!== 'object' ||!(k in current)) {
            return defaultVal;
        }
        current = current[k];
    }
    return current;
}

// 然后在原函数中使用simpleGet替代get
export default function getD(obj: any | [], key: string, defaultVal: any) {
    // 第一个参数如果不是对象返回默认值
    if (Array.isArray(obj)) return defaultVal;
    // 使用封装的方法或者使用get方法: npm i --save lodash.get
    // import get from 'lodash/get'
    // 然后导入get方法
    const val = simpleGet(obj, key, defaultVal); // {} null [] defaultVal
    if (!Array.isArray(val)) return JSON.stringify(val) === '{}'? defaultVal : val || defaultVal;
    return Array.isArray(val) && Array.isArray(defaultVal)? val : defaultVal;
}

 

总之,进行兜底是编写高质量代码的重要组成部分,可以提高代码的稳定性、可靠性和用户友好性。同时,它也是保护数据完整性和提高代码容错性的关键步骤。

标签:兜底,封装,val,get,代码,current,defaultVal
From: https://blog.csdn.net/weixin_69810763/article/details/144606814

相关文章

  • 你自己有封装过哪些组件吗?说说看
    在前端开发中,封装组件是一个常见的做法,它可以提高代码的可重用性、可维护性和可读性。以下是一些我曾经封装过的前端组件:按钮组件(ButtonComponent):封装了不同样式、大小和功能的按钮,如主按钮、次按钮、危险按钮等。支持点击事件回调、加载状态显示等功能。输入框组件(Inp......
  • Linux 软件管理(yum, apt/apt-get, dpkg/rpm)
    yum操作命令更新源sudoyumcleanall&&sudoyummakecache安装包sudoyuminstall<package_name>[-<version>]升级包sudoyumupgrade<package_name>升级所有:sudoyumupdate卸载包sudoyumremove<package_name>降级包sudoyu......
  • js 如何调用浏览器摄像头api,MediaDevices.getUserMedia
    在JavaScript中,可以使用MediaDevices接口和getUserMedia方法来访问用户的摄像头,并拍摄照片或录制视频。以下是一个简单的示例,展示了如何使用这些API来拍照和录制视频。拍照<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"......
  • Jackson的@JsonGetter 注解
    1.概述Jackson是Java生态系统中不可或缺的工具,提供了将Java对象序列化为JSON以及反序列化的功能。它的一个特性是@JsonGetter注解,用于在序列化过程中自定义getter方法输出的名字。@JsonGetter注解概览Jackson的@JsonGetter注解用来标识一个方法作为特定属......
  • Jackson 的@JsonAnyGetter注解
    1.概述在Java领域,Jackson是一个非常灵活的库,用于将Java对象转换为JSON格式,并支持反向操作。它的一个强大注解是@JsonAnyGetter,该注解允许在序列化的JSON中添加动态属性,而无需在POJO(PlainOldJavaObject)中定义具体的属性。@JsonAnyGetter注解概览@JsonAnyGe......
  • 解决Ubuntu安装git时遇到的进程占用和waiting for cache lock: Could not get lock /v
    系统版本:Ubuntu20.04.2.0在安装git时,使用sudoaptinstallgit,却有以下提示:即出现waitingforcachelock:Couldnotgetlock/var/lib/dpkg/lock-frontend的问题查阅资料,有人提出使用kill9进程号这里我使用 kill99021提示bash:kill:(9)-Nosuchprocess......
  • Redis API(springboot整合,已封装)
    目录结构maven导包pom.xmlapplication.ymlredis配置类编写Service方法调用示例结构maven导包pom.xml依赖项主要添加如下<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-re......
  • DIP封装和SMT封装
    DIP封装和SMT封装DIP封装和SMT封装分别是什么,两者有什么区别?DIP封装(DualIn-linePackage)和SMT封装(Surface-MountedTechnology)是两种不同的电子元器件封装技术,它们各自有不同的特点和应用场景。DIP封装定义:DIP封装是一种双列直插式封装,集成电路的外形为长方形,两侧有两排平行......
  • vue3 wspt 插件的使用 wsplayer无插件开发包封装
    基于大华插件:H5播放器开发套件(wsplayer无插件开发包)V1.2.9使用方法npmiwsptwspt使用说明1.找到node_modules目录中wspt文件夹,将static文件夹、jquery.min.js、palyer.css、PlayerControl.js、WSPlayer.js文件复制到项目public目录下。public|--jquery.min.js......
  • 深入解析1688详情API接口概念(1688.item get)商品上货
    一、1688详情API接口概念1688详情API接口(1688.itemget)是一种编程接口,它允许开发者通过特定的请求方式获取1688平台上商品的详细信息。这个接口就像是一个数据通道,开发者可以利用它从1688的庞大商品数据库中提取所需的数据,以便进行各种应用的开发。二、1688.item......