我认为使用 Either/Maybe/InformationEntries 相对于带异常的简单可空类型没有任何显着优势,特别是在 .NET 8 / C# 12 中,其中编译器非常有效地处理可空类型。
对我来说,这种方法似乎不惯用,并且会导致不必要的样板代码。与其害怕例外并试图避免它们,我更愿意拥抱它们。主动抛出异常并将其正确集成到日志记录和面向用户的消息/提示中似乎更有效,并且可以更好地与第三方工具(例如日志记录)和 API 集成。
我在这里错过了什么吗:?
Either
类型对于“可能失败”的方法非常有用。通常,当出现问题时,我们会抛出异常而不是返回“失败值”,这可能与方法返回的类型不同。
抛出异常的性能不高,因此最好从方法中返回一些“失败值”。但是我们的方式存在这种类型冲突 - 这可以通过像
Either
这样的类型来解决,这意味着“两种类型之一”,在我们的场景中意味着“要么成功,要么错误”。