在写代码的过程中经常遇到undefined报错的问题,有没有老师能出一个针对它综合帖子?

[复制链接]
261 |2
天启 发表于 2024-12-4 21:26:20 | 显示全部楼层 |阅读模式
大概就是各种数据或者对象经常取不到,不知道啥时候需要加判断啥时候能取到之类的
回复

使用道具 举报

丸子 发表于 2024-12-5 09:34:39 | 显示全部楼层
本帖最后由 丸子 于 2024-12-5 09:38 编辑

1. 如果你的数据是从服务端下发的,那此时你在后续写逻辑的时候就要注意,来自服务端的数据就要进行判空处理
2. 当你的数据来自配置表时,也要判空一下,有可能你的配置表数据会没有及时的加载亦或者使用了一个没有定义的值
3. 当一个变量频繁被修改时,也要判断一下,有可能数据会丢失或者是被置空
4. 动态生成对象的时候呢,建议是写异步,切记!不能在OnStart写async,会被阻塞

可以加一些方法来做判空处理,或者捕获报错
/**
     * 输出报错堆栈
     * @param error 错误
     */
    public static outPutErrorStackTrace(error: Error) {
        if (error instanceof Error) {
            console.error("Stack trace:", error.stack);
        } else {
            console.error("Unknown error:", error);
        }
    }

    /**
     * 检查传入的值是否为空值
     * @param value
     * @returns 为空值返回true,不为空值返回false
     */
    public static IsEmpty(value: any): boolean {
        let empty: boolean = true;
        if (value != null && value != undefined) {
            empty = false;
        }
        return empty;
    }


使用实例
//捕获报错
try {
     
} catch (error) {
     UtilMgr.outPutErrorStackTrace(error);
}

        //数据判空
let pluginData: any;
if (UtilMgr.IsEmpty(pluginData)) {
     console.log("数据为空");
} else {
     console.log("数据不为空");
}





回复

使用道具 举报

天启楼主 发表于 2024-12-5 18:29:12 | 显示全部楼层
丸子 发表于 2024-12-5 09:34
1. 如果你的数据是从服务端下发的,那此时你在后续写逻辑的时候就要注意,来自服务端的数据就要进行判空处 ...

老师我指的的是比如onstart方法下,其他类实例的属性获取怎么保证已经准备好、数据中心频繁获取数据是不是也有可能获取不到、服务端遍历玩家是不是得判断玩家、角色、其数据中心是否准备好等,有些数据的使用不判空不报错但是代码就不往下执行了,不知道是bug还是就这样设定的,什么情况会出现这样问题呢
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表