gpt4 book ai didi

error-handling - 值得介绍 “incorrect”结果以避免程序崩溃吗?

转载 作者:行者123 更新时间:2023-12-03 09:03:15 24 4
gpt4 key购买 nike

在我的组织中,我看到很多地方将代码放置在监视器块(RPG的try..except版本)中,以防止引发算术错误异常。例如:

Monitor;                    
Pxxhour = Bctime/60;
PxxMin = %Rem(Bctime:60);
On-Error;
Pxxhour = 0;
PxxMin = 0;
PxxhourPxxmin是将显示给用户的屏幕字段。因此,如果操作中有错误,则这些错误的值将为0。尽管这可以防止程序崩溃,但有什么帮助呢?用户不断在屏幕上看到错误的值。同样,我看到的代码为给定变量分配了尽可能高的值,而不是允许溢出异常。尽管这样做可以防止程序崩溃,但从长远来看又有什么帮助呢?计算不会具有错误的值并导致错误的业务数据吗?

@jmarkmurphy和@Charles在下面给出的答案从RPG和IBM中端 Angular 成功地解决了这个问题,这正是我所追求的。

最佳答案

当我的计算出现错误时该怎么办

即使是用户的错误,对用户造成打击的程序也很糟糕。它使用户认为程序有错误,然后发生的任何意外事件都将成为程序的错误。固定的东西。事情真的可能会因此失控,从而导致服务台 call 普通事件,即使结果实际上是正确的,也只是显得有些奇怪。

一种选择是验证用户输入以防止计算错误,但是当您无法真正防止所有错误时,您会怎么做。在我们的世界中,其中一种情况是开发票。 5250屏幕的房地产有限,您不能总是将字段设置得足够大以容纳所有事件。因此需要权衡。也许您需要能够在一张发票上出售数千个小物品,但您所拥有的最大发票总额是10万美元。因此,您可以像这样调整字段的大小:

dcl-s quantity        Packed(5:0);
dcl-s unitPrice Packed(7:2);
dcl-s ammount Packed(9:2);

所有这些都是奇怪的,因为它们占用的磁盘空间与下一个更低的偶数精度相同。您不出售分数数量,每个字段的最大值是:
quantity = 99,999;
unitPrice = $99,999.99;
amount = $9,999,999.99;

现在,您可以看到这些最大值应该可以轻松处理所有有效发票,但同时也留有大量潜在的计算错误。如果用户键入数量和单价的最大数量,则结果数量将需要Packed(12:2)字段。那会导致溢出。在单价存储在发票明细中的发票中,我们可以在输入数量和单价时添加编辑,以检查是否存在扩展金额溢出,并发送适当的错误消息。但是,如果单价未存储在发票明细中,而是存储在定价表中,该怎么办?现在没有一种好方法,例如,如果更改价格以确保现有发票均不会受到不利影响。

那么,如何处理十进制溢出或任何其他计算错误(无论是数据问题还是其他问题)?如果发生错误,该怎么办?炸毁程序不是一个好的选择。另一个选择,似乎是在问题中采用的,是应用一些用户会很快识别出的异常值的默认值。它会出现在报告和屏幕上。当用户看到那些太大或太小的数字时,他们就会知道要返回并检查数据。

关于error-handling - 值得介绍 “incorrect”结果以避免程序崩溃吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43290050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com