2011-07-10 33 views
1

所以我有这样的代码,使用Weka中的Java API:秧鸡的Java API stringtovector例外

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

当一个功能明确抛出一个异常,一两件事情必须发生

  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

你必须使用的情况下,任何一个try catch块出错:

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