1 class Program 2 { 3 static void Main(string[] args) 4 { 5 Contract.ContractFailed += (sender, e) => 6 { 7 Console.WriteLine("协定出错"); 8 Console.WriteLine(e.Message); 9 e.SetHandled(); 10 }; 11 12 int result = 0; 13 try 14 { 15 result = sub(4, 5); 16 } 17 catch 18 { 19 Console.WriteLine("Catch A Exception"); 20 } 21 finally 22 { 23 Console.WriteLine(result); 24 } 25 26 Console.ReadLine(); 27 } 28 public static int sub(int a, int b) 29 { 30 Contract.Requires(a > b, "fUCK YOU"); 31 32 return a - b; 33 } 34 }
运行结果只输出 -1.
为什么协定出错了,Contract.ContractFailed没有捕获到。
自带的code contract的大部分功能还要装个插件才能用。
http://visualstudiogallery.msdn.microsoft.com/1ec7db13-3363-46c9-851f-1ce455f66970