Elm:
处理错误

如何操作:

Elm 的核心哲学是没有运行时异常。因此,Elm 利用其类型系统以及像 MaybeResult 这样的类型来处理错误。

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 的错误处理鼓励开发者事先考虑所有路径,避免忘记错误情况的陷阱。

参见: