The event information for this event is supplied by the System.Diagnostics.Contracts.ContractFailedEventArgs object that is passed to the event handler. This event notifies a managed application environment such as an interactive interpreter or a Web browser host that a contract has failed. Before doing so, it will raise an event that an application can handle as it sees fit. For example, if code is being run in a testing framework, you can log a test failure and then end the test.
The default implementation of the System.Diagnostics.Contracts.Internal.ContractHelper.RaiseContractFailedEvent(ContractFailureKind, string, string, Exception) method in the .NET Framework class library is to call each handler that is registered with the Contract.ContractFailed event. Exceptions thrown by handlers are ignored, but each handler can indicate whether the failure is handled by calling the ContractFailedEventArgs.SetHandled method for the event arguments. If any handler sets the failure as handled, the method returns null and no further action is taken. Alternatively, handlers can call the ContractFailedEventArgs.SetUnwind method to instruct the code to unwind. In that case, an exception is thrown after all handlers have executed.