I am wondering if anyone knows of tools or techniques to automatically inject common faults into a running .NET program. Stuff like...

* Randomly inject an OutOfMemoryException upon allocation
* Randomly inject FileNotFoundException upon trying to access a files
* Randomly inject IO or Network exceptions upon using a socket.

So I'm really looking for a way to intercept some specific calls in the CLR similar to what AppVerifier does for native Win32 code. The purpose is to test apps under lots of error conditions beyond the developers control and to make sure such conditions are handled.