这里我有一些代码似乎实现了"纯粹" try-catch的功能版本:评估一个值,如果发生错误,则返回相同类型的不同给定值。以下示例适用于GHCi。
pureCatch的第一个参数是尝试计算的值。第二个参数是在计算异常时使用的值。 (显然可以用Maybe替换,但效果是一样的。)
collection.Indexes.CreateOne(Builders<searchFileByAuthor>.IndexKeys.Text(x=>x.subject));
除了严重的系统错误(如内存不足或GHC错误)之外,是否存在使用此技术无法捕获的错误?是否可以扩展此功能以捕获任何其他类型的错误?
这里使用unsafePerformIO真的不安全吗?怎么样?这会彻底破坏程序吗?
这种技术是否能够在评估&#34;值&#34;?
时捕获所有异常从Haskell语言的角度来看,这种技术或未定义的行为是否有任何不确定性?
我还应该知道其他什么吗? (告诉我,我是多么顽皮,试图抓住一切:))我不一定会在任何地方使用它,这是一种求知欲。我不是Haskell程序员。
是否可以使用更好的语法编写或不需要XScopedTypeVariables?
我觉得这可能是开始Haskell程序员喜欢用来捕获错误的函数。那么,为什么不呢?