Java面向对象基础(异常)

什么是异常

异常是指在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
在这里插入图片描述

程序中的异常

//初识程序中的异常
public class Demo1 {
    
    
    public static void main(String[] args) {
    
    
        Scanner in = new Scanner(System.in);
        System.out.print("请输入被除数:");
        int num1 = in.nextInt();
        System.out.print("请输入除数:");
        int num2 = in.nextInt();
        System.out.println(num1 + "/" + num2 + "=" + num1 / num2);
        System.out.println("感谢使用本程序!");
    }
}

如果输入的除数是0或者输入的除数不是数字的时候,程序就无法向下运行了。
程序的运行过程中所发生的不正常的事件,会中断正在运行的程序。这就是异常

异常处理

根据不同的异常进行相应的处理,而不会就此中断我们的生活,就是异常处理
Java编程语言使用异常处理机制为程序提供了处理错误的能力
在这里插入图片描述

异常处理机制

通过异常处理机制进行处理:(简单的try-catch)
通过异常处理关键字进行专门的处理
try、catch、 finally、throw、throws
在这里插入图片描述

try -catch使用

try{
有可能出现错误的代码
}catch(异常){
捕捉异常处理的方式
}

使用try-catch异常处理的三种情况:
1、做了异常处理,但是没有异常
2、有异常,处理到了
3、有异常,但是捕捉到的和catch类型的异常不匹配,没有抓到

异常对象处理

在catch中加入自定义的处理信息:
System.err.println("出现错误:错误提示信息 ");
其中的err,是让打印出来的文字变为红色,err错误

调用方法输出异常信息:
异常对象. printStackTrace();//输出异常的堆栈信息,具体错误
异常对象常用的方法:
在这里插入图片描述
常见异常类型:
在这里插入图片描述

try-catch-finally

finally块 是否发生异常都会执行的代码

格式:
finally{ 最终都会执行的代码块}

finally唯一不执行的情况:
当前面有system.exit(1);//因为这个方法是强制退出jvm

存在return的try-catch-finally块:
`public void method(){
try {
// 代码段 1
// 产生异常的代码段 2
} catch (异常类型 ex) {
// 对异常进行处理的代码段3
return;
}finally{
// 代码段 4
}
}
return和finally一起出现的时候,先执行finally,再执行return.

多重catch

try 和catch,finally 在一起组合的时候,try是必须的,剩下的二者可全部一起,也可任意一个一起出现

多重catch:
try{}后面可以跟多个catch{}

排列catch 语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
只执行第一个与异常类型匹配的catch语句

使用throws声明异常
使用throw抛出异常
throw和throws的对比:
在这里插入图片描述
自定义异常
当JDK 中的异常类型不能满足程序的需要时,可以自定义异常类
在这里插入图片描述

自定义异常,只需继承Throwable类,Exception类或者RuntimeException
一个类按照这三种方式进行继承,就变成了异常类
作用:
可以根据我们自己的需要定义异常类,当程序抛出异常的时候,我们可以清楚的知道具体的异常

异常链和异常处理原则

异常链创建了新的异常但却保留了原有异常的信息
异常处理与性能
异常只能用于非正常情况
不要将过于庞大的代码块放在try中
在catch中指定具体的异常类型
需要对捕获的异常做处理

代码练习:

package day03.demo1Excep;

import java.util.Scanner;

//通过异常练习 领取四大名著
public class Demo6Book {
    
    
    public static void main(String[] args) {
    
    
        System.out.println("请输入1--4之间的数字:");
        Scanner in = new Scanner(System.in);
        try{
    
    
            int num=in.nextInt();
            switch (num){
    
    
                case 1:
                    System.out.println("您领取到了----《水浒传》");
                    break;
                case 2:
                    System.out.println("您领取到了----《西游记》");
                    break;
                case 3:
                    System.out.println("您领取到了----《三国演义》");
                    break;
                case 4:
                    System.out.println("您领取到了----《红楼梦》");
                    break;
            }
        }catch (Exception e){
    
    
            System.out.println("输入异常");
        }
        finally {
    
    
            System.out.println("欢迎提出意见");
        }
    }
}

结果展示:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yangyingjian123/article/details/113529753