相关疑难解决方法(0)

为什么捕获异常非纯,但抛出异常是纯粹的?

在Haskell中,您可以从纯函数代码中抛出异常,但是您只能捕获IO代码.

  • 为什么?
  • 你可以在其他情况下或仅在IO monad中捕获吗?
  • 其他纯功能语言如何处理它?

haskell functional-programming exception-handling purely-functional

37
推荐指数
2
解决办法
3526
查看次数

IDisposable.Dispose()实现应该是幂等的吗?

Microsoft.NET框架提供了IDisposable需要实现void Dispose()方法的接口.其目的是IDisposable实现可能已分配实施的昂贵资源的手动或基于范围的发布.示例包括数据库集合,流和句柄.

我的问题是,如果该Dispose()方法的实现是幂等的 - 当在同一个实例上多次调用时,该实例仅被"处置"一次,并且后续调用不会抛出异常.在Java中,大多数具有相似行为的对象(作为示例再次出现流和数据库连接)对于它们的close()操作是幂等的,这恰好是该Dispose()方法的模拟.

但是,我个人使用.NET(特别是Windows Forms)的经验表明,并非所有实现(它们都是.NET框架本身的一部分)都是幂等的,因此后续调用这些实现会引发争议ObjectDisposedException.这真的让我对如何处理一次性对象的实现感到困惑.该场景是否有共同的答案,还是取决于对象的具体上下文及其用法?

.net c# memory-management idempotent

22
推荐指数
3
解决办法
851
查看次数