Elm:
处理错误
如何操作:
Elm 的核心哲学是没有运行时异常。因此,Elm 利用其类型系统以及像 Maybe
和 Result
这样的类型来处理错误。
Maybe
场景:
safeDivide : Float -> Float -> Maybe Float
safeDivide numerator denominator =
if denominator == 0 then
Nothing
else
Just (numerator / denominator)
-- 当你运行它时:
safeDivide 10 2
--> Just 5
safeDivide 10 0
--> Nothing
Result
场景:
type Error = DivisionByZero
safeDivide : Float -> Float -> Result Error Float
safeDivide numerator denominator =
if denominator == 0 then
Err DivisionByZero
else
Ok (numerator / denominator)
-- 使用它的时候:
safeDivide 10 2
--> Ok 5
safeDivide 10 0
--> Err DivisionByZero
深入探究
Elm 的类型系统是严格的,有助于及早捕捉错误。历史上,大多数语言依赖异常和运行时检查,但 Elm 选择了编译时保证。像 Result
这样的替代方案能够提供详细的错误信息,而 Maybe
对于是-否场景则更加简单。Elm 的错误处理鼓励开发者事先考虑所有路径,避免忘记错误情况的陷阱。
参见:
- Elm 官方指南关于错误处理的章节:错误处理 - 一个介绍
- Elm
Maybe
文档:Elm – Maybe - Elm
Result
文档:Elm – Result