异常2:捕获和抛出异常

异常2:捕获和抛出异常

image

package com.exception;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        try {//try监控区域
            System.out.println(a/b);
        }catch (ArithmeticException e){//catch捕获异常
            System.out.println("程序出现异常,变量b不能为0");
        }finally {//处理善后工作
            System.out.println("finally");
        }

        //finally可以不要finally,但假设IO流资源异常需要关闭就需要用finally关闭!


    }

   
}
程序出现异常,变量b不能为0
finally

package com.exception;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        try {//try监控区域
            new Test().a();
        }catch( Throwable e){//catch(想要捕获的异常类型!)捕获异常
            System.out.println("程序出现异常,变量b不能为0");
        }finally {//处理善后工作
            System.out.println("finally");
        }

        //finally可以不要finally,但假设IO流资源异常需要关闭就需要用finally关闭!


    }

    public void a(){b();}
    public void b(){a();}
}
package com.exception;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;
        
        //假设要捕获多个异常:从大到小!

        try {//try监控区域
            System.out.println(a/b);
        }catch( Error e) {//catch(想要捕获的异常类型!)捕获异常
            System.out.println("Error");
        }catch (Exception e){
            System.out.println("Exception");
        }catch ( Throwable e){
            System.out.println("Throwable");
        }finally {//处理善后工作
            System.out.println("finally");
        }

        //finally可以不要finally,但假设IO流资源异常需要关闭就需要用finally关闭!


    }

    public void a(){b();}
    public void b(){a();}
}

Exception
finally

Process finished with exit code 0
package com.exception;

public class Test2 {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        //Ctrl + Alt + T
        try {
            System.out.println(a/b);
        } catch (Exception e) {
            e.printStackTrace();//打印错误的栈信息
        } finally {
        }
    }
}
java.lang.ArithmeticException: / by zero
	at com.exception.Test2.main(Test2.java:10)

Process finished with exit code 0
package com.exception;

public class Test {
    public static void main(String[] args) {
        int a = 1;
        int b = 0;

        //假设要捕获多个异常:从大到小!

        try {//try监控区域

            if (b==0){//throw throws
                throw new ArithmeticException();//主动的抛出异常
            }
            System.out.println(a/b);


            
        }catch( Error e) {//catch(想要捕获的异常类型!)捕获异常
            System.out.println("Error");
        }catch (Exception e){
            System.out.println("Exception");
        }catch ( Throwable e){
            System.out.println("Throwable");
        }finally {//处理善后工作
            System.out.println("finally");
        }

        //finally可以不要finally,但假设IO流资源异常需要关闭就需要用finally关闭!


    }

    public void a(){b();}
    public void b(){a();}
}
package com.exception;

public class Test {
    public static void main(String[] args) {
       new Test().test(1,0);

    }

    public void test(int a, int b) {
        if (b == 0) {//throw  throws
            throw new ArithmeticException();//主动的抛出异常
        }
        System.out.println(a / b);
    }
}
Exception in thread "main" java.lang.ArithmeticException
	at com.exception.Test.test(Test.java:11)
	at com.exception.Test.main(Test.java:5)

Process finished with exit code 1

package com.exception;

public class Test {
    public static void main(String[] args) {

        try {
            new Test().test(1,0);
        } catch (ArithmeticException e) {
            e.printStackTrace();
        }

    }

    //假设这个方法中,处理不了这个异常,在方法上抛出异常
    public void test(int a, int b) throws ArithmeticException {
        if (b == 0) {//throw  throws
            throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
        }
        System.out.println(a / b);
    }
}
posted @ 2022-04-17 23:10  追风的羊  阅读(78)  评论(0)    收藏  举报