Hi
It looks like we have a bug when using recursive fakes + chains + WillThrow.
The work around is to to record expectation on HttpPostedFile that is returned from PostedFile property separately.
Exception myException = new Exception("this is a fake exception");
var fakeFileCtrl = Isolate.Fake.Instance<FileUpload>(Members.ReturnRecursiveFakes);
var fakePostedFile = Isolate.Fake.Instance<HttpPostedFile>();
//set the fakes on HttpPostedFile
Isolate.WhenCalled(() => fakePostedFile.ContentLength).WillReturn(90);
Isolate.WhenCalled(() => fakePostedFile.FileName).WillReturn("abc.jpg");
Isolate.WhenCalled(() => fakePostedFile.SaveAs("c:\inetpub\wwwroot\MyPrefix.jpg")).WillThrow(myException);
//set FileUpload.PostedFile to return our fake HttpPostedFile
Isolate.WhenCalled(() => fakeFileCtrl.PostedFile).WillReturn(fakePostedFile);
:arrow: The workaround is not inline with the idea of recursive fakes which comes to save you the extra code.
I will update as soon as we will fix the bug.