haskell - 确保处理所有异常
问题描述
源于这个问题,有没有办法确保我处理所有可能抛出的异常?类似于来自编译器的模式匹配详尽警告,但针对异常。我认为这将是有道理的...
解决方案
您可以通过 捕获所有异常SomeException
,但这通常是一个坏主意,因为您最终还会捕获从外部抛出到线程的异步异常。
在 Haskell 中,经常使用异步异常来触发其他线程取消线程、发出内存错误信号等。您想要捕获异步异常的情况非常少见;它们在很大程度上与线程正在运行的实际逻辑无关。但是您仍然可以使用诸如bracket
和之类的函数,finally
以便正确释放被杀死线程持有的资源。
像safe-exceptions和unliftio这样的包有助于避免错误地捕获异步异常,同时仍然提供catchAny
捕获其他类型异常的功能。
推荐阅读
- printing - CUPS:如何在点阵打印机上修复右边距
- r - 在 R 中合并多个数据集
- r - 开发函数以在 R 中创建新的数据框
- node.js - 错误 [CredentialsError]:配置中缺少凭据,但仅在 Fargate AWS 上运行时
- swift - Mac 终端运行一个 bash 脚本,该脚本启动一个快速程序并每小时重新启动
- html - 如何避免页脚表现得像 div?
- python - 我正在尝试使数组与用户输入一起工作
- angular - 如何使用+ Laravel在Angular中用外部表的值填充选择
- python - 将 SQL 函数注释到 Django ORM Queryset `FUNC` / `AGGREGATE`
- react-native - Responsive height iPhone 8 to iPhone Pro max on React Native?