如何在Haskell中捕获被零除的错误?

如何在Haskell中捕获被零除的错误?,haskell,Haskell,对于像file not found这样的东西,下面代码的基本结构将起作用,但是对于这个被零除的例子,不会捕获异常。一个人如何抓住一个被零除的数 import Control.Exception.Base import Data.Array main = toTry `catch` handler toTry = do print "hi" print (show (3 `div` 0)) print "hi" handler :: IOError -> IO

对于像file not found这样的东西,下面代码的基本结构将起作用,但是对于这个被零除的例子,不会捕获异常。一个人如何抓住一个被零除的数

import Control.Exception.Base
import Data.Array

main = toTry `catch` handler

toTry = do
    print "hi"
    print (show (3 `div` 0))
    print "hi"

handler :: IOError -> IO ()
handler e = putStrLn "bad"

您需要一个处理程序,该处理程序捕获一个,并匹配
除以零

import Control.Exception.Base
import Data.Array

main = toTry `catch` handler

toTry = do
    print "hi"
    print (show (3 `div` 0))
    print "hi"

handler :: ArithException -> IO ()
handler DivideByZero = putStrLn "Divide by Zero!"
handler _ = putStrLn "Some other error..."

请参阅是否有可算作“捕获所有”的内容?您可以编写一个处理程序来捕获
SomeException
,以捕获任何类型的异常。