捕获除AsyncException之外的所有异常

扬·托纳尔(Jan Tojnar)

我需要执行许多可能以多种无法想象的方式失败的计算,但是这些失败可以忽略(通知用户)。但是,我不想忽略AsyncException就像UserInterrupt这样用户可以停止使用该程序Control- C

如果我尝试中止下面的程序,它将仅输出# failed: user interrupt–好像无法将异常强制转换为AsyncExceptionuser interrupt正在打印我们知道的例外是UserInterrupt两者皆可抛(cast UserInterrupt :: Maybe AsyncException)。

为什么UserInterrupt例外,没有看出端倪,并重新抛出

import Control.Exception
import Control.Monad
import Data.Typeable

main = forM_ [1..500000] processNumber

processNumber n =
    handle h (simulateComputation n)
  where
    h (SomeException e) =
        case (cast e :: Maybe AsyncException) of
            Just ae ->
                throw ae
            Nothing ->
                putStrLn $ show n ++ " failed: " ++ show e

simulateComputation n = do
    putStrLn "...Obtaining data and computing..."
    --when (n `mod` 1000 == 0) $
    --    throw (ErrorCall "ComputationFailed")
    --when (n `mod` 1111 == 0) $
    --    throw DivideByZero
尤拉斯

这是语言的一个黑暗角落。实际上,在将转换为时将AsyncException其包装使用代替(或强制转换为)。SomeAsyncExceptionSomeExceptionasyncExceptionFromExceptioncastSomeAsyncException

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scala:静默捕获所有异常

来自分类Dev

Java线程捕获所有异常?

来自分类Dev

在 Unity 中捕获所有异常

来自分类Dev

捕获类中的所有异常

来自分类Dev

为什么catch语句不能捕获所有异常?

来自分类Dev

如何捕获Web API 2中的所有异常?

来自分类Dev

如何捕获PL / SQL脚本中的所有异常?

来自分类Dev

如何尝试/捕获所有异常

来自分类Dev

捕获Javascript类方法中的所有异常

来自分类Dev

如何使用CherryPy捕获所有异常?

来自分类Dev

捕获网络问题中的所有异常

来自分类Dev

从 Android 中的线程捕获所有异常

来自分类Dev

在Java中进行错误处理时,应该捕获异常以捕获所有异常还是单独捕获异常?

来自分类Dev

REGEX - 捕获除指定字符序列之外的所有内容

来自分类Dev

带有异常捕获的春季交易

来自分类Dev

捕获所有异常以进行详细日志记录-优点和缺点

来自分类Dev

捕获所有异常并在Jersey中返回自定义错误

来自分类Dev

捕获服务结构ReceiveReminderAsync中未处理的所有异常的正确方法是什么

来自分类Dev

拦截C#中的所有异常,即使它们已经被捕获

来自分类Dev

什么是正确的错误类,可用于捕获pyxb中CreateFromDocument的所有异常

来自分类Dev

捕获所有异常以进行详细日志记录-优点和缺点

来自分类Dev

如何在Rails视图(.erb文件)中捕获和记录所有异常

来自分类Dev

如何捕获WCF中的所有异常但包括自定义数据?

来自分类Dev

Laravel 404 的所有异常

来自分类Dev

在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法

来自分类Dev

在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法

来自分类Dev

捕获后继续尝试阻止。将所有异常记录在一次try catch中

来自分类Dev

尝试并除捕获sys.exit()之外的所有错误

来自分类Dev

正则表达式可捕获除连贯文本之外的所有内容

Related 相关文章

  1. 1

    Scala:静默捕获所有异常

  2. 2

    Java线程捕获所有异常?

  3. 3

    在 Unity 中捕获所有异常

  4. 4

    捕获类中的所有异常

  5. 5

    为什么catch语句不能捕获所有异常?

  6. 6

    如何捕获Web API 2中的所有异常?

  7. 7

    如何捕获PL / SQL脚本中的所有异常?

  8. 8

    如何尝试/捕获所有异常

  9. 9

    捕获Javascript类方法中的所有异常

  10. 10

    如何使用CherryPy捕获所有异常?

  11. 11

    捕获网络问题中的所有异常

  12. 12

    从 Android 中的线程捕获所有异常

  13. 13

    在Java中进行错误处理时,应该捕获异常以捕获所有异常还是单独捕获异常?

  14. 14

    REGEX - 捕获除指定字符序列之外的所有内容

  15. 15

    带有异常捕获的春季交易

  16. 16

    捕获所有异常以进行详细日志记录-优点和缺点

  17. 17

    捕获所有异常并在Jersey中返回自定义错误

  18. 18

    捕获服务结构ReceiveReminderAsync中未处理的所有异常的正确方法是什么

  19. 19

    拦截C#中的所有异常,即使它们已经被捕获

  20. 20

    什么是正确的错误类,可用于捕获pyxb中CreateFromDocument的所有异常

  21. 21

    捕获所有异常以进行详细日志记录-优点和缺点

  22. 22

    如何在Rails视图(.erb文件)中捕获和记录所有异常

  23. 23

    如何捕获WCF中的所有异常但包括自定义数据?

  24. 24

    Laravel 404 的所有异常

  25. 25

    在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法

  26. 26

    在ASP.NET C#中捕获所有异常,而不是在try {} catch {}块中捕获每个方法

  27. 27

    捕获后继续尝试阻止。将所有异常记录在一次try catch中

  28. 28

    尝试并除捕获sys.exit()之外的所有错误

  29. 29

    正则表达式可捕获除连贯文本之外的所有内容

热门标签

归档