Browse Source

新增 close(AutoCloseable autoCloseable) 方法

James 3 years ago
parent
commit
663b9ce568
1 changed files with 15 additions and 0 deletions
  1. 15 0
      src/main/java/com/jfinal/render/Render.java

+ 15 - 0
src/main/java/com/jfinal/render/Render.java

@@ -19,6 +19,7 @@ package com.jfinal.render;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import com.jfinal.core.Const;
+import com.jfinal.log.Log;
 
 /**
  * Render.
@@ -72,4 +73,18 @@ public abstract class Render {
 	 * Render to client
 	 */
 	public abstract void render();
+	
+	/**
+	 * OutputStream、Writer 写入异常时,关闭它们,ActionHandler 中未向底层容器继续抛出 IOException,
+	 * 以防容器在意外情况下未关闭它们(虽然调试 undertow 源码得知,无论异常产生与否,都将关闭它们)
+	 */
+	protected void close(AutoCloseable autoCloseable) {
+	    if (autoCloseable != null) {
+	        try {
+                autoCloseable.close();
+            } catch (Exception e) {
+                Log.getLog(getClass()).error(e.getMessage(), e);
+            }
+	    }
+	}
 }