On 11 November 2014 at 20:09, <t...@apache.org> wrote: > Author: tn > Date: Tue Nov 11 20:09:32 2014 > New Revision: 1638340 > > URL: http://svn.apache.org/r1638340 > Log: > [FILEUPLOAD-242] Do not silently swallow all Throwables. > > Modified: > commons/proper/fileupload/trunk/src/changes/changes.xml > > commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java > > Modified: commons/proper/fileupload/trunk/src/changes/changes.xml > URL: > http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/changes/changes.xml?rev=1638340&r1=1638339&r2=1638340&view=diff > ============================================================================== > --- commons/proper/fileupload/trunk/src/changes/changes.xml (original) > +++ commons/proper/fileupload/trunk/src/changes/changes.xml Tue Nov 11 > 20:09:32 2014 > @@ -44,6 +44,7 @@ The <action> type attribute can be add,u > > <body> > <release version="1.4" date="TBA" description="TBA"> > + <action issue="FILEUPLOAD-242" dev="tn" type="fix">FileUploadBase - > should not silently catch and ignore all Throwables</action> > <action issue="FILEUPLOAD-257" dev="tn" type="fix">Fix Javadoc 1.8.0 > errors</action> > <action issue="FILEUPLOAD-234" dev="tn" type="fix">Fix section > "Resource cleanup" of the user guide</action> > <action issue="FILEUPLOAD-237" dev="tn" type="fix">Fix streaming > example: use FileItem.getInputStream() instead of openStream()</action> > > Modified: > commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java > URL: > http://svn.apache.org/viewvc/commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java?rev=1638340&r1=1638339&r2=1638340&view=diff > ============================================================================== > --- > commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java > (original) > +++ > commons/proper/fileupload/trunk/src/main/java/org/apache/commons/fileupload/FileUploadBase.java > Tue Nov 11 20:09:32 2014 > @@ -366,8 +366,8 @@ public abstract class FileUploadBase { > for (FileItem fileItem : items) { > try { > fileItem.delete(); > - } catch (Throwable e) { > - // ignore it > + } catch (Throwable t) { > + handleThrowable(t);
In this case, surely it would make more sense to just catch Exception? I agree that it is vital that TD and VME are not ignored, but other Throwables should be not be ignored either here. > } > } > } > @@ -375,6 +375,25 @@ public abstract class FileUploadBase { > } > > /** > + * Checks whether the supplied Throwable is one that needs to be > + * rethrown and swallows all others. > + * @param t the Throwable to check > + */ > + private void handleThrowable(Throwable t) { > + if (t instanceof ThreadDeath) { > + throw (ThreadDeath) t; > + } > + if (t instanceof StackOverflowError) { > + // Swallow silently - it should be recoverable > + return; > + } > + if (t instanceof VirtualMachineError) { > + throw (VirtualMachineError) t; > + } > + // All other instances of Throwable will be silently swallowed > + } > + > + /** > * Processes an <a href="http://www.ietf.org/rfc/rfc1867.txt">RFC > 1867</a> > * compliant <code>multipart/form-data</code> stream. > * > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org