为什么不在方法内部的 try-catch 有效?
package ro.ase.acs.main;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import ro.ase.acs.classes.Addition;
import ro.ase.acs.classes.Robot;
import ro.ase.acs.interfaces.BinaryOperation;
import ro.ase.acs.interfaces.DisplayService;
public class Main {
public static void main(String[] args) {
Robot robot = new Robot();
robot.setName("Lego Mindstorms");
robot.setAutonomy(2);
robot.setProductionYear(2015);
try(FileOutputStream fos = new FileOutputStream("robot.bin");
DataOutputStream data = new DataOutputStream(fos)) {//baga in fisier datele setate mai sus;
data.writeUTF(robot.getName());
data.writeFloat(robot.getAutonomy());
data.writeInt(robot.getProductionYear());
} catch(IOException e) {
e.printStackTrace();
}
Robot robot2 = new Robot();
try(FileInputStream fis = new FileInputStream("robot.bin");//se citesc datele din fisier;se creeaza un al 2-lea obiect cu datele pe care le-am bagat anterior in fisier;
DataInputStream data = new DataInputStream(fis)) {
robot2.setName(data.readUTF());
robot2.setAutonomy(data.readFloat());
robot2.setProductionYear(data.readInt());
} catch(IOException e) {
e.printStackTrace();
}
}
这是我老师写的代码,我读到 try-catch() 只有在方法内部时才有效,但在上面的代码中,它在不在方法内部的情况下也有效。是否足以声明一个新对象在 try-catch 之前编写 try 而不将其包含在方法中?
是的,static void main() 是一种方法,这就是为什么我们可以在 static void main() 中编写 try-catch 语句而不会出现错误的原因。
至尊宝的传说
相关分类