异常02:捕获和抛出异常

//try 一定要有,finally可以不要

//如果 try 里面出现了异常 ,catch 就会捕获异常

//catch 捕获异常,有点像if,else if ,层层递进,得把最大范围写在下面,不然会报错 !!
//假设要捕获多个异常,catch(范围),范围要从小到大

//主动在方法里抛出的是 throw ,主动在方法上抛出的是 throws

//抛出异常 try -- catch ,好处是代码错误直接就停止了, try -- catch 监控的代码如果遇到错误,抛出异常,程序正常的往下执行

异常处理机制
  • 抛出异常
  • 捕获异常
  • 异常处理五个关键字
    • try、catch、finally、throw、throws
      • 1.try -- 监控区域
        1. catch -- 用来捕获异常
        1. finally -- 处理善后工作,最后执不执行都会走的
        1. throw -- 用于抛出异常
        1. throws -- 用于抛出异常
catch 的范围:

抛出异常快捷键(try -- catch -- finally):

Ctrl+Alt+T

代码示例:
  • 正常来说,程序执行的输出结果如下所示:

进程已结束,退出代码0

Demo01.java:
package com.exception;

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

        int a = 1;
        int b = 0;

        //假设要捕获多个异常要从小变大

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

        //finally 可以不要finally , 假设 IO ,资源,需要关闭可以放到finally中

    }

    public void a() {
        b();
    }

    private void b() {
        a();
    }

}

输出:

exception
finally

进程已结束,退出代码 0
Demo02.java:
package com.exception;

public class Demo02 {
    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.Demo02.main(Demo02.java:11)

进程已结束,退出代码 0

Demo03.java:
package com.exception;

public class Demo03 {
    public static void main(String[] args) {
        //利用try... catch 抛出,程序继续执行
        try {
            new Demo03().test(1, 0);
        } catch (ArithmeticException e) {
            e.printStackTrace();
        }
        System.out.println(" 利用try..catch 抛出,程序继续执行 ");
    }

    //throws假设这个方法处理不了,在方法上抛出异常
    public void test(int a, int b) throws ArithmeticException {

        if (b == 0) {   //主动抛出异常  throw  throws
            throw new ArithmeticException();  //throw主动抛出异常,一般在方法中使用
        }
        System.out.println(a / b);
    }
}


输出:

java.lang.ArithmeticException
	at com.exception.Demo03.test(Demo03.java:18)
	at com.exception.Demo03.main(Demo03.java:7)
 利用try..catch 抛出,程序继续执行 

进程已结束,退出代码 0

posted @ 2020-09-06 10:48  nkndlawn  阅读(221)  评论(0)    收藏  举报