Your problem is that when the exception is thrown, the assignment to fofPerformanceDetail never happens. Thus, it is still non-null. In your catch block, be sure to set fofPerformanceDetail to null.
As another little tidbit, you can use the <out> tag in the <rule> to clear a context variable, which in this case would be fofPerformanceDetail, though that isn't necessary in this case.
yeah, i did that eventually; although I'm not sure if thats the most elegant solution in case you have to set 5,6 context variables.
Btw Dan -- when is your book releasing? I bought the MEAP book 2 months ago and am waiting for the print edition