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

问题描述

缺省构造函数不能处理隐式超构造函数抛出的异常类型 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。必须定义显式构造函数

解决方案

    public FileInputStream(String name) throws FileNotFoundException {        this(name != null ? new File(name) : null);    }

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

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

getNum这个方法抛出了IOException

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

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

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

解决方案四:
解决了 我这么写就没事了
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;
}
}

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

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

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

时间: 2024-07-31 11:36:25

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

plsql-PLSQL中定义显式游标时用了INTO子句没有报错,请教这个INTO子句的作用是什么?

问题描述 PLSQL中定义显式游标时用了INTO子句没有报错,请教这个INTO子句的作用是什么? 如题,在定义显式游标时用了INTO子句,能编译正常且执行也没错,请问这里的into有啥作用? 代码如下: DECLARE pi_org_cd VARCHAR2(15); -- org cd CURSOR cur_test_data IS SELECT 'MYTEST' org_cd INTO pi_org_cd FROM DUAL ; BEGIN OPEN cur_test_data; FETCH

C#的显式引用转换

显式引用转换包括: ●从对象到任何引用类型 ●从类类型S到类类型T,其中S是T的基类. ●从基类型S到接口类型T,其中S不是密封类,而且没有实现T. ●从接口类型S到类类型T,其中T不是密封类,而且没有实现S. ●从接口类型S到接口类型T,其中S不是T的子接口. 从元素类型为Ts的数组类型S到元素类型为Tt的数组类型T的转换,这种转换需要满足下列条件: ●S和T只有元素的数据类型不同,而维数相同. ●Ts和Tt都是引用类型. ●存在从Ts到Tt的显式引用转换. ●从System.Array到数组

C#的显式枚举转换

显式枚举转换包括以下内容: ●从sbye,byte,short,ushort,int,uint,long,ulong,char,float,double,或decimal到任何枚举类型. ●从任何枚举类型到sbyte,byte,short,ushort,int,uint,long,ulong,char,float,double,或decimal. ●从任何枚举类型到任何其它枚举类型. 显式枚举转换是这样进行的:它实际上是枚举类型的元素类型与相应类型之间的隐式或显式转换.比如,有一个元素类型为in

C#的显式数值转换

显式数值转换是指当不存在相应的隐式转换时,从一种数字类型到另一种数字类型的转换.包括: ●从sbyte到byte,ushort,uint,ulong,或char. ●从byte到sbyte或char. ●从short到sbyte,byte,ushort,uint,ulong,或char. ●从ushort到sbyte,byte,short,或char. ●从int到sbyte,byte,short,ushort,uint,ulong,或char. ●从uint到sbyte,byte,short,

javascript显式类型转换实例分析

  javascript显式类型转换实例分析         这篇文章主要介绍了javascript显式类型转换,实例分析了javascript实现类型转换的常用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了javascript显式类型转换的方法.分享给大家供大家参考.具体分析如下: 尽管js可以做许多自动类型转换,但某些时候仍然需要做显示类型转换或为了代码逻辑清晰易读而做显示类型转换. 做显示类型转换最简单的方法就是用Boolean().Number().String()或Obj

显式锁(第十三章)

显式锁 在Java5.0之前,在协调对共享对象的访问时可以使用的机制只有synchronized和volatile.Java5.0增加了一种新的机制:ReentrantLock.ReentrantLock并不是一种替代内置加锁的方法,而是当内置加锁机制不适用时,作为一种可选择的高级功能. 1. Lock接口与ReentrantLock Lock提供了一种无条件的.可轮询的.定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显示的. Lock接口: public interface Lock

c++显式类型转换示例详解_C 语言

标准C++包含一个显式的转换语法: static_cast:用于"良性"和"适度良性"的转换,包括不用强制转换 const_cast:用于"const"和/或"volatile"进行转换 reinterpret_cast:转换为完全不同的意思.为了安全的使用它,关键必须转换回原来的类型.转换成的类型一般只能用于位操作,否则就是为了其他隐秘的目的.这是所有转换中最危险的. dynamic_cast:用于类型安全的向下转换 ---

C++ Explicit Constructors(显式构造函数)

C++ 为类(Class)提供了许多默认函数.如果自己没有申明,编译器会为我们提供一个copy构造函数.一个copy assignment操作符和一个析构函数.此外,如果没有申明任何构造函数,编译器会为我们申明一个default构造函数.很像下面的Empty类: 1 class Empty{ 2 public: 3 Empty(); 4 Empty(const Empty &rhs); 5 ~Empty(); 6 Empty& operator=(const Empty &rhs)

oracle显式授权和隐式授权

oracle对象的授权 Oracle授权 一.授权语法 GRANT语法: 1.显式授权(直接将对象授权给用户) GRANT privilege [, ...] ON object [, ...]  TO  { Public| Group | Username|role} [WITH GRANT OPTION ] 例子grant read,write on directory dir_home to public 2.隐式授权(通过将角色授权给用户) GRANT role TO  { Public