为什么要在方法签名中写public static void main操作符throws,也就是这样:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Test {
public static void main(String[] args) throws FileNotFoundException {
FileInputStream fileInputStream = new FileInputStream("path");
}
}
如果课程没有public static void main,我会这样写:
import java.io.FileInputStream;
public class Excep {
FileInputStream fileInputStream = new FileInputStream("path");
}
然后 IDEA 建议您需要在构造中try, catch或使用运算符来处理它throws。我按照 IDEA 对操作员的建议做了throws:
import java.io.FileInputStream;
import java.io.FileNotFoundException;
public class Excep {
FileInputStream fileInputStream = new FileInputStream("path");
public Excep() throws FileNotFoundException {
}
}
为什么要在这里创建构造函数,为什么要为它编写运算符throws?
当一个对象被创建时,
Excep会发生几个动作,其中两个对于这个问题很重要:您还需要考虑到,如果方法或构造函数调用可能导致抛出异常,则应在签名中使用
throws ...由于构造函数
Excep可以导致 aFileNotFoundException并且默认构造函数不包含构造函数throws ...,因此您必须创建一个显式构造函数并指定调用它可以导致 aFileNotFoundException。事实上,开发环境提供了什么为了使这种情况下的构造函数不抛出异常,必须在其中进行处理。但是在这种情况下,您仍然必须创建一个构造函数(并将初始化移入其中
fileInputStream)。而且,最重要的是,您需要有意识地在构造函数中捕获真正需要的异常。因为它将
fileInputStream = new FileInputStream("path")被放置在构造函数中。这是一些可执行代码,但它必须放在某个地方,以便在创建对象时执行。唯一这样的地方是构造函数。