【发布时间】:2011-10-29 04:10:55
【问题描述】:
有没有办法改变代码契约在运行时的行为方式?例如,当运行时前或后条件失败时,应用程序崩溃。有没有办法不崩溃,而是显示一个 MessageBox??
【问题讨论】:
-
这个帖子有点含糊;我看到您提到 C# 作为参考语言,您能给我们一个代码示例以及实际操作与所需操作吗?谢谢。
标签: c# code-contracts contract
有没有办法改变代码契约在运行时的行为方式?例如,当运行时前或后条件失败时,应用程序崩溃。有没有办法不崩溃,而是显示一个 MessageBox??
【问题讨论】:
标签: c# code-contracts contract
当合约失败时,程序不会“崩溃”,但会引发异常。 Contracts 类允许您控制什么样的异常。
因此,您需要某种形式的异常处理,而不仅仅是合同。
话虽如此,失败的合同通常严重到足以终止应用程序。
【讨论】:
File.Exists,以避免FileNotFoundException。
File.Exists 和尝试打开文件之间删除或移动文件。这类事情(被 Eric Lippert 称为“外生异常”)通常最好使用普通的结构化异常处理机制来处理。