Browse Source

IOException 抛出时关闭 OutputStream、Writer

James 3 years ago
parent
commit
80ef1db249

+ 4 - 1
src/main/java/com/jfinal/render/FreeMarkerRender.java

@@ -16,6 +16,7 @@
 
 package com.jfinal.render;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -158,7 +159,9 @@ public class FreeMarkerRender extends Render {
 			template.process(data, writer);		// Merge the data-model and the template
 			writer.flush();
 		} catch (Exception e) {
-			close(writer);
+		    if (e instanceof IOException) {
+		        close(writer);
+		    }
 			throw new RenderException(e);
 		}
 	}

+ 4 - 1
src/main/java/com/jfinal/render/JsonRender.java

@@ -16,6 +16,7 @@
 
 package com.jfinal.render;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -139,7 +140,9 @@ public class JsonRender extends Render {
 			writer.write(jsonText);
 			writer.flush();
 		} catch (Exception e) {
-			close(writer);
+		    if (e instanceof IOException) {
+		        close(writer);
+		    }
 			throw new RenderException(e);
 		}
 	}

+ 0 - 1
src/main/java/com/jfinal/render/QrCodeRender.java

@@ -130,7 +130,6 @@ public class QrCodeRender extends Render {
 				throw new RenderException(e);
 			}
 		} catch (Exception e) {
-			close(os);
 			throw new RenderException(e);
 		}
 	}

+ 4 - 2
src/main/java/com/jfinal/render/TemplateRender.java

@@ -74,8 +74,10 @@ public class TemplateRender extends Render {
 			}
 			
 			throw e;
-		} catch (IOException e) {
-			close(os);
+		} catch (Exception e) {
+		    if (e instanceof IOException) {
+		        close(os);
+		    }
 			throw new RenderException(e);
 		}
 	}

+ 4 - 1
src/main/java/com/jfinal/render/TextRender.java

@@ -16,6 +16,7 @@
 
 package com.jfinal.render;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 
 /**
@@ -66,7 +67,9 @@ public class TextRender extends Render {
 			writer.write(text);
 			writer.flush();
 		} catch (Exception e) {
-			close(writer);
+		    if (e instanceof IOException) {
+		        close(writer);
+		    }
 			throw new RenderException(e);
 		}
 	}