浏览代码

新增 close(AutoCloseable autoCloseable) 方法

James 3 年之前
父节点
当前提交
663b9ce568
共有 1 个文件被更改,包括 15 次插入0 次删除
  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);
+            }
+	    }
+	}
 }