背景: 我们有一个遗留库,其中特定方法返回非托管资源(文件句柄)。该库的使用者使用该文件句柄并在完成后处理它。该库目前将处置外部化,因为只有消费者才能决定何时可以安全处置。
在某些情况下会发生这种情况,即消费者即使在达到目的之后仍保持文件处理程序不变,这会导致内存泄漏。为了避免这种情况,我们正在标准化消费者调用,它确定性地处理文件句柄。
问题:如果方法不符合任何要求的标准,是否可以从方法中/在方法内抛出编译器异常。例如:我们希望确保消费者在他们的实现中处理文件句柄,如果没有抛出编译器生成的异常。我们对任何方法持开放态度,包括自定义属性、自定义 fxcope 规则等。