例如我要按顺序执行一堆逻辑:
逻辑1:挖矿,然后存档
逻辑2:收获矿,然后存档
逻辑3:矿挖完了,把矿干掉,然后存档
(每个逻辑都存档是因为玩家随时可能在某一个逻辑中退出游戏下线,我做的单机游戏 存档都在本地)
那么如果出现异常,比如在逻辑2的时候,因为代码不严谨 导致了报错,最终导致代码跑不到逻辑3(我用的ts语言)
然后这个时候因为前两个逻辑已经跑完了,档也存了,玩家的档里面就剩了一个空的矿在地图上
然而我们的逻辑要求是 只要跑了 逻辑1 ,就必须要跑完 逻辑3 才算一个完整的结束,不然就会因为数据错乱会导致玩家挖这个空的矿 永远会报错
类似的这种会导致逻辑中断的代码问题,经常会遇到,一般我们有什么好的方法或者设计可以规避掉这个问题吗
我目前知道的只有一种类似操作数据库的思想:事务回滚机制(目前还处在想象研究阶段,大家轻喷,因为好像从来没人把这种东西用到前端)
就是如果一个完整的逻辑因为各种原因没有跑完,那么就会恢复到最初的状态,放到上面的例子里 就是恢复到逻辑1之前的状态(一个从来没挖过的矿)
不知道有没有什么好办法可以一劳永逸的解决这类问题
因为游戏已经上线了,目前的解决办法就是如果线上的玩家出现问题,就写一些弥补的逻辑,比如把上面的那个出问题的矿手动写代码删掉,然后gm发补偿,就会导致项目里出现大量的这种弥补的代码
但我觉得这个治标不治本~ 当然,第一时间肯定是解决有问题的代码部分,让程序不出错,但因为只要是人写的代码 肯定难以避免出问题
所以我就在想,有没有一种可以在出问题的时候,不写弥补代码的方法
有大佬给过一个方案 :就是用try catch,把关键代码都try起来(不过目前还没有想到好的使用思路)
然后我就想问一下大家一般是怎么处理这种类似的情况的