第二章第七天异常

异常的概述

异常:应用程序在运行的过程中发生的使程序意外终止的情况。

异常的分类

异常的顶级父类:Throwable

 子类:Error  |  ----Exception

                   |--- 运行时异常(unchecked异常)-----》RuntimeException

                 |-- 编译期异常(checked异常)====》除了RuntimeException以及其子类,其他的异常我们都认为是编译期异常

可以处理的异常:Exception

无法通过程序处理的异常:Error  例如:内存溢出、JVM奔溃、蓝屏、电脑冒烟

 

例一、需求说明:在程序中实现两个数字求商的功能。当除数为0时,正确使用try-catch捕捉如图所示的程序异常。

package day10.demo3;

import java.util.InputMismatchException;
import java.util.Scanner;

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

        try {
            Scanner input=new Scanner(System.in);
            System.out.print("请输入被除数:");
            int num1=input.nextInt();
            System.out.print("请输入除数:");
            int num2=input.nextInt();
            int result = num1 / num2;
            System.out.println("除法计算结果是:" + result);
        } catch (Exception x){
            System.err.println("出现错误:被除数和除数必须是整数,除数不能为零。");
            x.printStackTrace();
        }
    }
}

例二、需求说明:在作业1的基础上,在try-catch块后加入finally块,。(注意:一般情况下finally中的代码不论程序是否发生异常都会执行,不执行的唯一情况是使用System.exit(1); 中断程序,退出Java虚拟机)

package day10.demo3;

import java.util.Scanner;

public class Demo02 {
    public static void main(String[] args) {
        try {
            Scanner input=new Scanner(System.in);
            System.out.print("请输入被除数:");
            int num1=input.nextInt();
            System.out.print("请输入除数:");
            int num2=input.nextInt();
            int result = num1 / num2;
            System.out.println("除法计算结果是:" + result);
        }catch (Exception e){
            System.err.println("出现错误:被除数和除数必须是整数,除数不能为零。");
        }finally {
            System.out.println("感谢使用本程序!");
        }
    }
}

例三、需求说明:当在try块中和catch块中包含return语句时,return语句在执行前,会先执行finally语句。请大家在作业2的基础上加入return语句,执行如图所示的效果。(提示:可在程序中加入打断点,观察程序的执行过程)

package day10.demo3;

import java.util.Scanner;

public class Demo03 {
    public static void main(String[] args) {
        try {
            Scanner input=new Scanner(System.in);
            System.out.print("请输入被除数:");
            int num1=input.nextInt();
            System.out.print("请输入除数:");
            int num2=input.nextInt();
            int result = num1 / num2;
            System.out.println("除法计算结果是:" + result);
        }catch (Exception e){
            System.err.println("出现错误:被除数和除数必须是整数,除数不能为零。");
            return;
        }finally {
            System.out.println("感谢使用本程序!");
        }
    }
}

猜你喜欢

转载自blog.csdn.net/qq_40115919/article/details/81517315