JSF自定义EL函数 - 封装异常



示例之后(基于类似的问题):

/**
 * 
 */
package za.co.sindi.jsf.functions;
import java.io.IOException;
import org.markdown4j.Markdown4jProcessor;
/**
 * 
 * @author Buhake Sindi
 * @since 22 January 2013
 *
 */
public final class SomeFunctions {
    /**
     * Private constructor
     */
    private SomeFunctions() {
        //TODO: Nothing...
    }
    public static String process(String input) {
        SomeProcessor processor = new SomeProcessor();
        try {
            return processor.process(input);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();  //I don't believe this is correct.
        }
    }
}

我在catch块中该怎么办?我只是在Java Logger上登录它,还是封装异常的JSF的首选方法?

取决于具体功能要求。

如果可以接受空输出,请记录并返回null。

public static String process(String input) {
    SomeProcessor processor = new SomeProcessor();
    try {
        return processor.process(input);
    } catch (IOException e) {
        someLogger.warn("Processing markdown failed", e);
        return null;
    }
}

如果不接受,请扔掉。

public static String process(String input) throws IOException {
    SomeProcessor processor = new SomeProcessor();
    return processor.process(input);
}

与混凝土问题无关的,您最好在创建/更新期间仅处理一次属性并将其作为属性存储(最终在db中),而不是一次又一次地处理相同的输出。因此,有效地,您最终获得了2个属性/db列,一个带有原始标记,另一个带有解析/处理过的标记。

最新更新