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

时间:2014-01-22 20:52:17

标签: jsf el

遵循示例(基于similar question):

/**
 * 
 */
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方式来封装异常?

1 个答案:

答案 0 :(得分:1)

取决于具体的功能要求。

如果空输出可接受,请记录它并返回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);
}

对于具体问题,

无关,您最好在创建/更新期间处理markdown并将其存储为属性(最终也在DB中),而不是一次又一次地处理相同的输出。所以,实际上你最终会得到2个属性/数据库列,一个带有原始markdown,另一个带有解析/处理的markdown。