throws用在方法上,在函数头,而throw出现方法体中,

throws表示这个方法体内可能出现的异常,throw是一定是出现了异常,

处理异常是一层一层往上抛,一直到某个方法处理了或者抛给了jvm,

首先附上代码显示出现了IOException的时候,没有具体方法处理,直接一层层抛给jvm的情况

package design_mode.proxy.static_proxy;


import java.io.IOException;

public class text {
    int age;
    
    public void a() throws IOException{//就直接抛出可能的异常没有处理
        int i=0;
    
        int x=5/i;
                System.out.println(x);
                
    }
public static void main(String[] args) throws IOException{//main函数也没处理就会抛给jvm
    
    
    text t=new text();
        t.a();

}
}

主要看代码中的注释,就解释了throws干了什么,就是在方法中抛出可能的异常,main函数也抛出可能的异常,最后一层层抛出给了jvm,然后控制台输出

Exception in thread “main” java.lang.ArithmeticException: / by zero
 at design_mode.proxy.static_proxy.text.a(text.java:14)
 at design_mode.proxy.static_proxy.text.main(text.java:22)

其实不管有没有写两个throws,都会由jvm抛出异常by zero所以就说明throws是一层一层抛出可能出现的异常

下面就说一下用throw的用法,因为当我们用throw就说明一定出现异常了,然后抛给main函数,那么main函数接到throw来的异常再用try catch来写出具体的异常,

下面是代码实现和具体的注释解释

import java.io.IOException;

public class text {
    int age;
    
    public void a() throws IOException{//throws用在方法上,表示这个方法可能抛出的异常
        int i=0;
        if(i==0) {
            throw new IOException();//throw表示已经出现异常,抛给main处理,如果main没处理就会往上抛
        }
        int x=5/i;
                System.out.println(x);
                
    }
public static void main(String[] args){
    
    try {
    text t=new text();
        t.a();
    } catch (IOException e) {
        System.out.println("出现io异常");
    }
    
    
}
}

控制台输出为:出现io异常

这说明public void a() throws IOException中的throws IOException表明这个a方法可能抛出io异常,然后 throw new IOException();//throw表示已经出现异常,抛给main处理,如果main没处理就会往上抛,但是这里我在main函数中try catch了IOEception并且输出 System.out.println(“出现io异常”),所以控制台输出为:出现io异常

博主是刚刚在实习的小白,希望哪里不对大家多多指正,一起成长一起进步,每天博主会发一个java学习的小知识QAQ

版权声明:本文为zhaokexin原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhaokexin/p/9962246.html