如何在Haskell中捕获错误并忽略它?

时间:2018-12-17 00:09:31

标签: haskell error-handling ghc

我有一个接受整数的函数,检查它是否等于 1 ,如果是,则返回 1 ,否则返回错误“ SomeError” 。 / p>

func i = if i == 1 then 1  else error "SomeError"

现在我有另一个函数调用此函数并检查其结果

check = let z = (func 2) in 
  case (Just z) of
    Nothing -> do Something
    _ -> do Something else

我为z = (func 1)中的z都尝试了z = (func 2)case (Just z) of 它会做其他事情,所以我在这里理解的错误不是没什么

那么什么是错误“ SomeError” ?我怎么知道(Just z)是使用case (Just z) of的错误

1 个答案:

答案 0 :(得分:2)

请尽量避免出错。将func更改为

func :: Int -> Maybe Int
func 1 = Just 1
func _ = Nothing

然后您可以照常写check(或类似地,无论如何):

check = case func 2 of
          Just z -> ...  -- z matches whatever is wrapped by Just
          Nothing -> ...