为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

富国沪深 2022-12-15 17:10:26
为什么不在方法内部的 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 语句而不会出现错误的原因。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

public static void main(String[] args) { ... }是一个方法,try-catch块是在这个main方法内部执行的。


一般性地回答您的问题:您可以在方法中编写 try-catch 块,也可以使用静态块(将在 main 方法之前执行):


class ClassName {

    static {

        //try-catch here

    }

}

但是,你不能写这样的东西:


class ClassName { 

    //try-catch here

}


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号