09 java的代码的执行顺序和异常处理

本文介绍了Java程序中类的执行顺序,包括静态属性初始化、静态代码块执行及主函数运行流程。此外还讲解了Java异常处理机制,包括try...catch...finally结构的使用,并通过自定义异常类示例展示了如何扩展异常处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

java类的执行顺序过程:

1 静态的属性成员初始化(类属性, 不管这个类创建了多少个对象,所有的对象共用这个成员变量)

2 static区域的代码

3 main函数代码

//在main函数里创建对象时才会有4, 5步

4 类属性成员初始化

5 构造函数


测试代码:


public class Main {
    public static int num = 88;
    public int num2 = 789;

    static {
        System.out.println("in static zone: num " + num);
    }

    public Main() {
        System.out.println("num2 = " + num2);       
    }

    public static void main (String args[]) {
        System.out.println("num = " + num);
        Main m = new Main();
    }
}

输出结果:
in static zone: num 88
num = 88
num2 = 789



java代码里的异常处理:

try {
   有可能会发生异常的代码
}catch (异常类型 ) {
    异常处理的代码

}finally {
    一定要执行的代码
}

//当使用java里封装好的类时,如类里会有抛出(throw)异常的可能时,我们就需要用”try … catch …”的方式来包含有可能抛出异常的代码。也可以不用”try …catch”方式来处理,只要在函数声明会抛出异常,由调用此函数者来处理异常.


在java里也可以从Exception类扩展出一个自定义的异常类, 如:

class MyException extends Exception {
    private static final long serialVersionUID = 3461899582505930473L; //自动产生一个序列号,用于区分异常的类型
    private String error; //存放异常信息字符串

    public MyException(String st) { //构造函数,用于指定此异常类型的字符串信息
        error = st;
    }
    public String toString() { //当用System.out.println(对象)调用时,输出异常信息字符串内容
        return error;
    }

}

//自定义的异常类在代码里的使用.

class Student {
    public void eat(String food) throws MyException { //声明此函数有可能会抛出异常
        if (food == "fish") { //当调用此eat(...)函数时,如传入的字符串内容为"fish"时就抛出异常
            //System.out.println("no fish");

            throw new MyException("raw fish");
        }

        System.out.println("food " + food);
    }

}


public class Main {
    public static void main(String[] args) {
        Student s = new Student();

        //异常处理
        try {
            s.eat("fish");
        } catch (MyException e) {
            System.out.println(e); 
        }
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值