weka java api stringtovector异常

weka java api stringtovector异常,java,api,exception,machine-learning,weka,Java,Api,Exception,Machine Learning,Weka,我有一段代码使用了Weka的Java API: String html = "blaaah"; Attribute input = new Attribute("html",(FastVector) null); FastVector inputVec = new FastVector(); inputVec.addElement(input); Instances htmlInst = new Instances("html",inputVec,1);

我有一段代码使用了Weka的Java API:

  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抱怨函数抛出未处理的异常


我做错了什么?

如果出现任何问题,您必须使用try-catch块:

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

当函数显式抛出异常时,必须发生以下两种情况之一

  • 调用函数必须在try-catch块中处理异常
  • 调用函数必须向其调用函数抛出异常(因此必须选择实际使用try-catch块处理异常的某个点)
  • 根据这里的文档:)此函数抛出一个普通的旧
    异常。不是超描述性的,但需要适当处理

    您可以这样做:

    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 {
        ...
    }