gpt4 book ai didi

error-handling - 专有处理/收集用户定义的错误

转载 作者:行者123 更新时间:2023-12-03 07:52:53 25 4
gpt4 key购买 nike

我不知道如何在不使用异常(即失败...标准系统异常)的情况下实现用户定义的错误(例程/算法停止)或警告消息(例程/算法可以继续)的专有处理过程。

示例:我有一个具有一系列功能的模块,该模块使用大量输入数据进行检查并用于计算压力容器组件的厚度。

计算过程是复杂的、迭代的,并且在得到结果之前需要执行很多检查,检查可以生成停止过程/例程/算法的“用户定义的错误”或生成继续进行的“警告消息”。

我需要收集这些错误和消息,以专用形式(Wpf 或 Windows 形式)显示给用户。这在最后。

注意:每次阅读 F# 或 C# 或 Visual basic 的书籍或 Internet 上的文章时,我发现相同的哲学/警告:系统/用户定义的异常的引发应尽可能限制:异常是无法管理的异常事件(不可预测)并导致计算机系统“过载”。

我不知道要实现哪种处理理念。我很困惑。关于这一特定论点,互联网上可用的资源有限。

实际上我打算采用这个 Phylosophy ,取自:“https://fsharpforfunandprofit.com/posts/recipe-part2/”。这对我来说听起来不错,......复杂,但很好。关于这个相关论点,我找不到其他引用资料。

问题:我可以考虑使用其他哲学来创建此专有处理/收集用户定义的错误吗?有些书要读还是有些文章?

我的决定将对如何设计和编写代码产生重大影响(将问题拆分为多个函数,生成按顺序运行的“电机”或根据结果以不同方式组合,在哪里检查错误/警告,如何存储错误和警告消息以了解正在发生的事情或“错误/警告”是在哪里产生并由“哪个函数”引起的?)。

提前谢谢了。

最佳答案

F# 的方式是尽可能对类型中的错误进行编码。最简单的示例是返回 None 的选项类型。如果操作失败为 Some value当它成功时。令人惊讶的是,很多时候这已经足够了!如果没有,那么您可以在有区别的联合中编码不同类型的错误和成功“状态”,例如

[<Measure>]
type psi

type VesselPressureResult =
| PressureOk
| WarningApproachingLimit
| ErrorOverLimitBy of int<psi>

然后您将使用模式匹配来“决定”在每种情况下要做什么。如果您需要添加更多变体,例如 ErrorTooLow ,然后您将其添加到 DU 中,然后编译器将“告诉”您需要修复逻辑的所有位置。

这是包含详细信息的完美来源: https://fsharpforfunandprofit.com/series/designing-with-types.html

关于error-handling - 专有处理/收集用户定义的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54340216/

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