JAVA冲刺复习之异常的处理2

throw和throws的区别:
(1)位置不同:throw在方法内部,throws在方法的声明处
(2)内容不同:throw+异常对象,throws+异常的类型
(3)作用不同:throw的作用是异常出现的源头,制造异常。throws是在方法的声明处,告诉方法的调用者,这个方法中可能会出现我声明的这些异常。然后调用者对这个异常进行处理;要么自己处理要么再继续向外抛出异常。
代码演示:throw处理异常
package Test04;

public class Test02 {
public static void main(String[] args) {
devide();
}
//提取一个方法,两个数相除操作
public static void devide(){
int num1=12;
int num2=0;
if(num2==0){
//人为制造异常
try{
throw new Exception();
}catch(Exception e){
System.out.println("这里的异常我自己处理了try-catch进行处理");
//除了自己处理,还有甩锅,谁调用这个方法就甩给谁
}

    //    throw new Exception();
    }else{
        System.out.println("商为:"+num1/num2);
    }
}

}
System.out.println("000000000000000000000000000000000000000000000000000000000000000");
throws抛出异常:
package Test04;

public class Test02 {
public static void main(String[] args) throws Exception {
devide();//因为我们甩锅给了devide(),devide()要么自己处理,要么也甩锅,也抛出异常,这里是也甩锅了
}
//提取一个方法,两个数相除操作
public static void devide() throws Exception{
int num1=12;
int num2=0;
if(num2==0){
throw new Exception();
}else{
System.out.println("商为:"+num1/num2);
}
}
}
System.out.println("000000000000000000000000000000000000000000000000000000000000000");
调用者自己处理异常:
package Test04;

public class Test02 {
public static void main(String[] args) {
try {
devide();//因为我们甩锅给了devide(),devide()要么自己处理,要么也甩锅,也抛出异常,这里是自己处理了
} catch (Exception e) {
throw new RuntimeException(e);
}
}
//提取一个方法,两个数相除操作
public static void devide() throws Exception{
int num1=12;
int num2=0;
if(num2==0){
throw new Exception();
}else{
System.out.println("商为:"+num1/num2);
}
}
}

posted @ 2025-06-18 12:45  骆驼刺破仙人掌007  阅读(7)  评论(0)    收藏  举报