gpt4 book ai didi

.net - 何时在 F# 中引发 nullArg

转载 作者:行者123 更新时间:2023-12-01 08:36:53 26 4
gpt4 key购买 nike

来自 Exceptions (Syntax for throwing and catching) ,它说 F# 中内置了四个有用的异常关键字,nullArg 会抛出一个 NullArgumentException:

let f x =
if x then "ok"
else nullArg "paramName" "message"

如果我编写的模块仅为 F# 使用,我应该在什么时候引发 NullArgumentException

最佳答案

即使您编写代码只是为了使用 F#,我认为在 F# 代码中使用异常也有完全有效的情况。

如果您遇到预期的错误,那么最好使用 Result类型。这包括读取可能格式错误的数据(因为它来自用户)或验证可能不正确的用户输入。

但是,我认为异常对于指示异常情况仍然有用。对于 nullArg具体来说,您需要它的情况并不多,因为 F# 主要消除了 null值,但是当您将 .NET 类型作为参数时,您仍然可以获得一个值。如果你有一个接受 IDictionary<string, string> 的函数你永远不会想到这是null ,这样写可能会有用:

let lookupName (dict:IDictionary<string, string>) = 
if dict = null then nullArg "dict" "lookupName expects a valid dictionary!"
if dict.ContainsKey "name" then dict.["name"] else "anonymous"

作为IDictionary是 .NET 类型,F# 无法确保它永远不会是 null并且明确地处理这种情况可能会为您提供更有用的错误信息,以防您不小心在代码中出错。

关于.net - 何时在 F# 中引发 nullArg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43525795/

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