java处理异常的两种方式

在Java中,方法声明时可以使用throws关键字指定可能抛出的异常类型。当方法抛出这些异常中的任意一种时,调用该方法的代码就需要捕获或继续抛出这些异常。

在您提供的代码中,main方法后面加上了throws InterruptedException,这意味着在main方法中可能会抛出InterruptedException异常。在Java中,当一个线程处于sleep状态时,另一个线程调用该线程的interrupt()方法可以中断该线程的休眠,从而抛出InterruptedException异常。因此,如果在main方法中调用了Thread.sleep方法,那么就有可能会抛出InterruptedException异常。

在Java中,我们可以使用try-catch语句来捕获异常,也可以使用throws关键字将异常继续抛出,由该方法的调用者来处理。因此,如果在main方法中使用了Thread.sleep方法,那么必须显式地指定可能抛出的InterruptedException异常。如果没有指定该异常,编译器就会报错,并要求您处理该异常。

需要注意的是,throws关键字不会实际地抛出异常,它只是指定可能抛出的异常类型。当方法实际地抛出异常时,该异常会被传递给方法的调用者,并由它来处理。如果方法的调用者也没有处理该异常,该异常就会一直被传递,直到被最外层的try-catch语句处理,或者导致程崩溃。

class MyThread extends Thread {

    public void run() {

        for (int i = 1; i <= 5; i++) {

            System.out.println("MyThread is running. " + i);

            try {

                Thread.sleep(1000);

            } catch (InterruptedException e) {

                e.printStackTrace();

            }

        }

    }

}

 

public class JoinExample {

    public static void main(String[] args) throws InterruptedException {

        MyThread t = new MyThread();

        t.start();

 

        // 等待MyThread线程执行完成

        t.join();

 

        System.out.println("Main thread is finished.");

    }

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值