第一个计时器.. java异常

时间:2012-10-25 20:08:51

标签: java apache-pig

我是java世界的新手..但基本上我正在尝试在pig-latin中编写用户定义的函数。

以下是相关代码。

public class time extends EvalFunc<String>{

public String exec(Tuple input) throws IOException {

    if ((input == null) || (input.size() == 0))
        return null;
    try{
        String time = (String) input.get(0) ;
        DateFormat df = new SimpleDateFormat("hh:mm:ss.000");
        Date date = df.parse(time);
        String timeOfDay = getTimeOfDay(date);
        return timeOfDay;
    } catch (IOException e) {
        throw e;
    }

}

所以基本上输入是一个元组...我检查元组是否为空。 然后将该日期字符串转换为时间对象..然后解析时间部分.. 然后是函数

  getTimeOfDay(date) returns a string... like breakfast, lunch dinner.. or empty string depending on the time hours..

现在的问题是我的日食说明和错误(红线)

 Date date = df.parse(time);
 String timeOfDay = getTimeOfDay(date);

 Unhandled exception type ParseException

但无论我尝试什么(给我3个选项..添加catch子句到周围的尝试,添加异常到现有的catch块和环绕用try / catch ..),错误转移..但总是tehre。< / p>

我甚至不确定我是否可以改变程序的结构..(方法声明等)..

我该如何解决这个问题。

  A quick guide on udf http://wiki.apache.org/pig/UDFManual

如果你认识猪..或者知道一个简单的方法..那么基本上我想要做的是...给出一个类型为“时间,id,金额”的输入字符串检查交易当天的什么时间制成?

感谢

1 个答案:

答案 0 :(得分:1)

  • 如果你的exec方法已被声明为抛出IOException,你不需要捕获它并抛出它,因为throws声明会自动执行此操作。
  • 至于ParseException,你必须决定如何处理它。
  • 还缺少一个支架=)

所以你的代码应该是:

public class time extends EvalFunc<String>{

public String exec(Tuple input) throws IOException {

    if ((input == null) || (input.size() == 0))
        return null;
    try{
        String time = (String) input.get(0) ;
        DateFormat df = new SimpleDateFormat("hh:mm:ss.000");
        Date date = df.parse(time);
        String timeOfDay = getTimeOfDay(date);
        return timeOfDay;
    } catch (ParseException e) {
        //how will I handle when df.parse(time) fails and throws ParseException?
        //maybe:
        return null;
    }
  } //exec

} //class