sinat_33415638
sinat_33415638
2016-02-01 02:22
采纳率: 36.8%
浏览 3.8k
已采纳

缺省构造函数不能处理隐式超构造函数抛出的异常类型 IOException。必须定义显式构造函数

int lastnum = getNum(source.getProperty("fileName"));
public static int getNum(String Filename) throws IOException {

    InputStream myxls;
    myxls = new FileInputStream(Filename);
    sr = new XSSFWorkbook(myxls);
    XSSFSheet sheet = sr.getSheetAt(0);// 第一个工作表
    return sheet.getLastRowNum();// 获取第一个工作表的行数
}

第一行报错:缺省构造函数不能处理隐式超构造函数抛出的异常类型 IOException。必须定义显式构造函数
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • fk002008
    lambda-fk 2016-02-01 04:17
    已采纳
        public FileInputStream(String name) throws FileNotFoundException {
            this(name != null ? new File(name) : null);
        }
    

    第一行它报的是FileNotFoundException
    这个没有错误啊
    你的流打开了是不是没有关闭阿

    点赞 评论
  • fk002008
    lambda-fk 2016-02-01 05:48

    再次确认下:
    你这个方法应该没有问题
    那么可能是 你定义的这个方法被谁调用了

    getNum这个方法抛出了IOException

    调用的地方是不是不能有这个IOException阿
    我怀疑你在哪个构造函数中调用这个方法了

    点赞 评论
  • fk002008
    lambda-fk 2016-02-01 06:55

    那你这个 lastNum又在哪里用了。
    缺省的构造函数我觉得是你自己写的这个类的

    察看一下调用链,自己的构造器里面有没有用到这个调用链

    点赞 评论
  • sinat_33415638
    sinat_33415638 2016-02-01 06:59

    解决了 我这么写就没事了
    int lastnum = getNum(source.getProperty("fileName"));
    public static int getNum(String Filename) {
    try {
    InputStream myxls;
    myxls = new FileInputStream(Filename);
    sr = new XSSFWorkbook(myxls);
    XSSFSheet sheet = sr.getSheetAt(0);// 第一个工作表
    return sheet.getLastRowNum();// 获取第一个工作表的行数
    } catch (IOException e) {
    // TODO: handle exception
    return 0;
    }
    }

    点赞 评论
  • fk002008
    lambda-fk 2016-02-01 07:04

    首先恭喜下
    从解决方法看应该是跑出的异常导致的.

    调用这个int lastnum = getNum(source.getProperty("fileName"));

    的函数可能对外的声名是没有异常的

    点赞 评论

相关推荐