I believe most application/web servers have some configuration at the server level which dictates the maximum request and/or file upload request sizes. When these values are checked and exceeded, the server typically reports some 4xx/5xx error response to the client; therefore no handler code ever fires.
In the cases where the handler code does fire, the server has already said and determined (since it didn't error) that space requirements were sufficient - then the upload parser should simply take the request and parse it. In the case where individual file sizes exceed some application setting, simply don't stream that part of the request - ignore it and move to the next chunk. That's precisely what my class I attached does.
The end result is the action's state is maintained with all form parameters, excluding any file data which was considered outside the boundaries of the application's configuration. Now the action can query whatever it may need from a backing bean/service, copy whatever files were OK to their new location and report those files which failed with their conditions.
The key here is that the application server itself determines the outcome. Either it's accepted or not; no gray area. When it reaches the application itself, now you can be free on how you want to handle it but at least you're guaranteed that the request's state complete rather than partial or non-existent.