是否总是需要在方法中编写 try-catch(),static void main() 是一种方法

为什么不在方法内部的 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 语句而不会出现错误的原因。


富国沪深
浏览 96回答 1
1回答

至尊宝的传说

public static void main(String[] args) { ... }是一个方法,try-catch块是在这个main方法内部执行的。一般性地回答您的问题:您可以在方法中编写 try-catch 块,也可以使用静态块(将在 main 方法之前执行):class ClassName {    static {        //try-catch here    }}但是,你不能写这样的东西:class ClassName {     //try-catch here}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java