исключение weka java api stringtovector - PullRequest
1 голос
/ 11 июля 2011

поэтому у меня есть этот код, который использует Java API Weka:

  String html = "blaaah";
    Attribute input = new Attribute("html",(FastVector) null);

    FastVector inputVec = new FastVector();
    inputVec.addElement(input);

    Instances htmlInst = new Instances("html",inputVec,1);
    htmlInst.add(new Instance(1));  
    htmlInst.instance(0).setValue(0, html);

    System.out.println(htmlInst);

StringToWordVector filter = new StringToWordVector();
filter.setInputFormat(htmlInst);
Instances dataFiltered = Filter.useFilter(htmlInst, filter);

, но в строке filter.setInputFormat (htmlInst) Java жалуется, что функция создает необработанное исключение ...

что я сделал не так?

Ответы [ 2 ]

2 голосов
/ 11 июля 2011

Когда функция явно генерирует исключение, должна произойти одна из двух вещей

  1. Вызывающая функция должна обработать исключение в блоке try-catch
  2. Вызывающая функция должна выдать исключение в функцию вызова (и, таким образом, вы должны выбрать точку, в которой вы фактически используете блок try-catch для обработки исключения)

В соответствии с документами здесь: http://www.lri.fr/~pierres/donn%E9es/save/these/weka-3-4/doc/weka/filters/unsupervised/attribute/StringToWordVector.html#setInputFormat(weka.core.Instances) эта функция выбрасывает простой старый Exception. Не суперописательный, но, тем не менее, требует надлежащего обращения.

Вы можете сделать это:

try {
    StringToWordVector filter = new StringToWordVector();
    filter.setInputFormat(htmlInst);
    Instances dataFiltered = Filter.useFilter(htmlInst, filter);
} catch (Exception e) {
    System.err.println("Exception caught during formatting: " + e.getMessage());
    return;
}

Если вы предпочитаете, чтобы другая функция обрабатывала исключение, измените сигнатуру вашего метода, чтобы явно выдать исключение:

private Object formatMyString(String s) throws Exception {
    ...
}
0 голосов
/ 11 июля 2011

Вы должны использовать блок try catch на случай, если что-то пойдет не так:

    try {
        filter.setInputFormat(htmlInst);
        Instances dataFiltered = Filter.useFilter(htmlInst, filter);
    } catch (Exception e) {
        e.printStackTrace();
    }
...