捕获和抛出异常

Posted 超霸霸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了捕获和抛出异常相关的知识,希望对你有一定的参考价值。

  • 抛出异常
  • 捕获异常
  • 异常处理五个关键字:try、catch、finally、throw、throws

实例演练

我们都知道:除数不能为0,我们在IDEA中运行一下除数为0看是否报错

public class Outer {
    public static void main(String[] args) {
        int a=1;
        int b=0;
        System.out.println(a/b);
}

运行结果:

在这里插入图片描述

可以看出这是一个Exception并且报错

  • 我们可以选择try——catch——finally结构避免报错
public class Outer {
    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("分母不能为0");
        }finally {//处理善后工作
            System.out.println("finally");
        }
        //可以不要finally
}

运行结果:

在这里插入图片描述

  1. try为监控区域

  2. catch捕获异常

  3. finally处理善后工作

  4. 可以不要finally

  • 假设要捕获多个异常:从小到大
public class Outer {
    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 t){
            System.out.println("Throwable");
        } finally {//处理善后工作
            System.out.println("finally");
        }
}
  1. 捕获多个异常,使用多个catch

  2. 异常类型必须从小到大,否则报错

  3. 只会执行一个catch语句

  • Ctrl + Alt + T 快捷方法
package demo02;

public class Outer {
    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 {
            
        }

}
  1. Ctrl + Alt + T ->try/catch/finally

  2. catch语句中执行的操作是打印错误的栈信息

  3. 打印错误的栈信息后还会继续执行后面的代码

  • throw和throws
public class Outer {
    public static void main(String[] args) {
        new Outer().test(1,0);
        System.out.println("Asda");
  }

        //假设这个方法中处理不了这个异常,方法上抛出异常
        public void test(int a,int b) throws ArithmeticException{
            if (b == 0) {
                throw new ArithmeticException();//主动的抛出异常,一般在方法中使用
            }
            System.out.println(a/b);
        }
}
  1. 主动的抛出异常,一般在方法中使用
  2. 假设这个方法中处理不了这个异常,方法上抛出异常

以上是关于捕获和抛出异常的主要内容,如果未能解决你的问题,请参考以下文章

Java中的异常的捕获和抛出是啥意思,有啥区别

捕获异常和抛出异常

oracle plsql 捕获异常和抛出异常

捕获和抛出异常

CodeIgniter 和抛出异常

异常抛出与捕获的思考