There is no functional difference between 'e := Exception.Create; raise e;' and 'raise Exception.Create;'. They do the exact same thing - create an object, and then raise it. It doesn't matter where the object is stored in memory between the 'Create' and 'raise' statements.
Yes, I know. But when I test something (even in this ... stupid? way) I always try to see if there is some internal difference between two apparently equal constructs. I'm not well versed in the intrincacies of compilers, you see.