Java异常的处理 try-catch-finally

目录

  • 什么是异常
  • 通过if-else处理异常
    • 用if-else堵漏洞的缺点
  • try-catch
      • 第一种处理
      • 第二种处理
      • 第三种处理
      • 第四种处理
  • try-catch-finally
  • System.exit(0);//终止当前的虚拟机执行

什么是异常

Exception:在程序的运行过程中,发生了不正常的现象,阻止了程序的运行,我们称之为发生异常。

import java.util.Scanner;

public class Except01 {

    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
        //实现一个功能:键盘输入两个数,求商:
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int num1 = sc.nextInt();
        System.out.println("请输入第二个数:");
        int num2 = sc.nextInt();
        System.out.println("商:"+num1/num2);
    }

}

Java异常的处理 try-catch-finally_第1张图片

通过if-else处理异常

import java.util.Scanner;

public class Except02 {
    //这是一个main方法,是程序的入口:
    public static void main(String[] args) {
        //实现一个功能:键盘输入两个数,求商:
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入第一个数:");
        if(sc.hasNextInt()){
            int num1 = sc.nextInt();
            System.out.println("请输入第二个数:");
            if(sc.hasNextInt()){
                int num2 = sc.nextInt();
                if(num2 == 0){
                    System.out.println("对不起,除数不能为0");
                }else{
                    System.out.println("商:"+num1/num2);
                }
            }else{
                System.out.println("对不起,你输入的不是int类型的数据!");
            }
        }else{
            System.out.println("对不起,你输入的不是int类型的数据!");
        }
    }
}

Java异常的处理 try-catch-finally_第2张图片

用if-else堵漏洞的缺点

  1. 代码臃肿,业务代码和处理异常的代码混在一起。
  2. 可读性差
  3. 程序员需要花费大量的经历来维护这个漏洞
  4. 程序员很难堵住所有的漏洞。

try-catch

在Java中,try-catch语句用于处理异常。当程序中可能出现异常时,可以使用try-catch语句来捕获并处理这些异常,以避免程序崩溃或出现不可预料的行为。

try-catch语句的基本语法如下:

try {
    // 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
    // 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {
    // 处理异常类型为ExceptionType2的代码块
}

在try代码块中,编写可能会抛出异常的代码。如果在try代码块中发生异常,控制流将转到相应的catch代码块。每个catch代码块处理一种特定的异常类型。如果没有找到匹配的catch代码块,则程序将终止。

import java.util.Scanner;

public class Except03 {
    public static void main(String[] args) {
        //实现一个功能:键盘输入两个数,求商:
        try{
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入第一个数:");
            int num1 = sc.nextInt();
            System.out.println("请输入第二个数:");
            int num2 = sc.nextInt();
            System.out.println("商:"+num1/num2);
        }catch(Exception ex){
            //第一种处理:什么都不写,什么都不做
            //第二种处理:输出自定义异常信息
            //System.out.println("对不起,你的代码有问题!");
            //第三种处理:打印异常信息:
            /*(1)调用toString方法,显示异常的类名(全限定路径)*/
            /*System.out.println(ex);
            System.out.println(ex.toString());*/
            /*(2)显示异常描述信息对应的字符串,如果没有就显示null
            System.out.println(ex.getMessage());*/
            /*(3)显示异常的堆栈信息:将异常信息捕获以后,在控制台将异常的效果给我们展示出来,方便我们查看异常*/
            /* ex.printStackTrace();*/
            //第四种处理:抛出异常:
            throw ex;
        }
        System.out.println("----谢谢你使用计算器");
    }
}

第一种处理

Java异常的处理 try-catch-finally_第3张图片

第二种处理

Java异常的处理 try-catch-finally_第4张图片

第三种处理

Java异常的处理 try-catch-finally_第5张图片

第四种处理

Java异常的处理 try-catch-finally_第6张图片

try-catch-finally

除了try-catch语句之外,还可以使用finally代码块来确保无论是否发生异常,都会执行某些操作。finally代码块的语法如下:

try {
    // 可能会抛出异常的代码块
} catch (ExceptionType1 e1) {
    // 处理异常类型为ExceptionType1的代码块
} catch (ExceptionType2 e2) {
    // 处理异常类型为ExceptionType2的代码块
} finally {
    // 无论是否发生异常都会执行的代码块
}


import java.util.Scanner;

public class Except04 {
    public static void main(String[] args) {
        //实现一个功能:键盘录入两个数,求商:
        try{
            Scanner sc = new Scanner(System.in);
            System.out.println("请录入第一个数:");
            int num1 = sc.nextInt();
            System.out.println("请录入第二个数:");
            int num2 = sc.nextInt();
            System.out.println("商:"+num1/num2);
            System.exit(0);//终止当前的虚拟机执行
            return;
        }catch(ArithmeticException ex){
            throw ex;
        }finally {
            System.out.println("----谢谢你使用计算器");
        }
    }
}

Java异常的处理 try-catch-finally_第7张图片
Java异常的处理 try-catch-finally_第8张图片

System.exit(0);//终止当前的虚拟机执行

它可以让finally中代码不执行

Java异常的处理 try-catch-finally_第9张图片

你可能感兴趣的:(JAVA,java,开发语言)