对错误的态度

近一年来受工作的关系看其他程序员的代码的机会变多了,学习了不少东西,但同时也发现很多问题,其中我遇到的最多的就是对错误的处理态度。

1)  从不拦截错误;

这可能是最原始且是最不好的行为,他们总是认为自己的程序肯定100%不会出现问题,因为他们坚信自己的代码考虑了一切可能的情况,这种理解我认为是非常危险的,翻翻你的代码,看看是否考虑了以下常见的情况:

l         在只允许输入数字的文本框里你拦截了键盘事件,但用户用右键粘贴了文本后你的程序正常吗?

l         设置了Locked属性的文本框用户一样可以粘贴,你的程序出问题了吗?

l         磁盘空间不足、目录只读、没有权限、目录名中有小数点、系统采用了短日期甚至不标准的格式;

l         明明事先检查了磁盘空间足够,可用户偏使用了什么磁盘配额,还是磁盘空间不足;

l         用户在你一段长时间的操作工程中等的不耐烦强行关机后重新运行你的这段程序;

l         你是否相信Access数据库或SQL Server数据库设置字段不能为空,但数据库就会莫名其妙的有NULL值在里面;

你所想象不到的情况太多了,所以说你永远不可能考虑所有的情况。

2)  总是拦截错误;

这种情况和第一种情况恰恰相反,他会不厌其烦的在每个过程中都添加On Error Goto ,然后出错的话报一个MsgBox框出来,我相信俩年以上五年以下工作经验99%VB程序员基本上都是这么做的,也许马上就有人立即站起来说:你刚才还说不可能考虑每一种情况,所以要拦错,为什么马上反悔了呢?这里我想提出我的第一个重要观点:

尽量不要封杀任何的底层错误。

我们假设有4个过程A,B,C,D,其中A调用了BB有调用了CC又调用了D,如果我们在每个子过程中都拦截了错误,那么如果D发生了错误,程序将报告发生一个错误,显然这时D退出后,C其后的代码就不应该执行了,似乎他现在唯一的办法只有通过D返回False来表示失败,他才知道底层失败了,不能继续执行了,同样的道理CB都要返回False来取消任务。

天啦,这岂不是要没有过程都要写成返回TrueFalse了,看看你的程序,这可能吗?而且你将遇到一个非常尴尬的局面,你调用任何一个函数都要这样调用:

        If B = False Then

            A = False

            Exit Sub

        End If

我想你肯定觉得不爽,不仅如此你还有一个致命的问题:最上层的程序(注意是程序而不是用户)根本不知道底层什么地方失败了,什么原因失败了,他唯一知道了事就是失败了!啊,真惨。

既然这样我们回头看看底层不拦截错误的情况:

  Public Sub A()

        On Error Goto ErrorHandler

 

        B()

        'Do some thing

        Exit Sub

 

ErrorHandler:

        MsgBox(Err.Description)

    End Sub

 

    Public Sub B()

        'Do some thing

        C()

    End Sub

 

    Public Sub C()

        'Do some thing

        D()

    End Sub

 

    Public Sub D()

        'Do some thing

    End Sub

在这里BCD都没有拦截错误,且不需返回是否成功,他们只专注自己所做的工作,且你可以看见的,任何地方出错都将跳出返回上一级。

所谓错误,就是一个完整事务的失败,不管他是什么情况。一个数据库连接失败是错误,一个不符合商业规则的东西也是错误,在我们的程序中同样应该作为错误触发。例如:

        If strName = "" Then

            Err.Raise(vbObjectError + 23, "Cworker.UpDate", , "名称不能为空。")

        End If

当然我同样将用户的取消作为错误出来,触发取消错误,例如:

        If UserCancel Then

            Err.Raise(vbObjectError + 10, "frmWorker.cmdCancel_Click", , "用户取消操作")

        End If

我一般习惯上把错误分为致命错误、软硬件错误、取消错误和商业错误。商业错误分为:不符合商业规则错误、权限错误。

对于程序的错误出来分布我一般把所有函数分为:安全函数和不安全函数,比如一个窗口中有十种动作,我首先建立一个RunFunction过程,例如:

              Public Sub RunFunction(ByVal vFun As EnumBusinFunction)

这个过程作为所有动作的入口,且统一出来错误,这个过程就叫安全函数,因为理论上调用他是不会播发错误的,然后所有事件中调用这个函数。在RunFunction函数中所调用的其他函数理论上应该都是不安全函数。

以上是我对错误的态度,说的很杂乱,请大家不要介意,我非常希望大家能够一起谈谈这个问题。

tansm@msn.com              谈少民    20011130日于广州

 

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 由于 ChatGPT 是一种人工智能技术,它并不直接对电商产生负面影响。然而,有些人认为人工智能和机器学习系统可能对就业市场产生不利影响,因为它们可以取代人类工作者。此外,一些电商网站也使用自动化系统来完成许多任务,这可能对人类员工产生不利影响。 总的来说,虽然 ChatGPT 本身不会对电商产生负面影响,但是关于人工智能和机器学习系统的担忧仍然存在。因此,我们需要小心使用这些技术,以确保它们不会对社会产生不利影响。 ### 回答2: ChatGPT作为一种强大的自然语言生成模型,在电商领域可能带来一些负面影响。 首先,ChatGPT可能存在信息的不准确性和误导性。它生成的回答仅仅是基于已有的数据训练而来,并不能保证回答的准确性。这样一来,用户在咨询或寻求建议时,可能会被错误的信息误导,从而导致消费决策的偏差。 其次,ChatGPT可能加剧了消费者的购物冲动和消费焦虑。它可以生成引人注目和吸引人的销售话术,对消费者进行个性化的产品推荐,从而刺激消费欲望。这样一来,消费者可能更容易被诱导购买不必要的产品,增加了经济负担。同时,ChatGPT无法提供真实的触摸和试穿体验,增加了消费者的购买风险和消费后的不满意感。 此外,ChatGPT也可能给电商平台带来安全和隐私风险。由于其自动生成的能力,ChatGPT可能会在购物过程中提供消费者敏感信息,如姓名、电话号码和信用卡信息。如果这些信息被恶意利用,将引发严重的隐私泄露风险。 总的来说,尽管ChatGPT带来了许多便利,但在电商领域,它也带来了一些负面影响。消费者需要保持警惕,对ChatGPT生成的回答保持怀疑态度,同时电商平台也需要加强对ChatGPT的使用监管,确保消费者的权益和隐私得到有效的保护。 ### 回答3: ChatGPT是一种语言生成模型,虽然它能为电商提供一些便利,但也存在一些负面影响。 首先,ChatGPT对电商可能带来虚假评论和推销的问题。由于它能够生成自然语言,ChatGPT可以被滥用于创建虚假好评或推销信息,误导购买者。这会损害消费者的信任感,导致他们在购物过程中产生疑虑。 其次,ChatGPT可能导致客户服务效率下降。在电商平台上,消费者经常需要与客服代表交流解决问题。使用ChatGPT可能导致在线客服回复变慢或提供不准确的答案,从而降低了客户服务的效率和质量。这可能会给消费者带来不满,甚至导致他们放弃购买。 另外,ChatGPT还可能增加电商平台上的信息泄露风险。由于ChatGPT能够生成自然语言,黑客可能利用其来模拟用户的身份,并获取私人信息。这给消费者的个人隐私和安全带来威胁。 最后,ChatGPT的算法可能会导致过度消费。ChatGPT可以根据用户需求推荐商品,但这可能导致用户被推荐过多的商品,从而诱使他们进行不必要的购买。这种过度消费可能会对用户的财务状况产生负面影响,导致浪费和负债。 综上所述,虽然ChatGPT对电商提供了某些便利,但也带来了虚假信息、服务效率下降、信息泄露风险和过度消费等负面影响。为了最大程度地减少这些影响,电商平台需要制定严格的规则和监管机制,合理利用ChatGPT技术,确保用户和平台的利益受到保护。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tansm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值