📜  处理除以零和多个异常的Java程序

📅  最后修改于: 2022-05-13 01:55:22.456000             🧑  作者: Mango

处理除以零和多个异常的Java程序

异常这些是由于程序员错误或机器错误而发生的事件,这些错误会干扰程序的正常执行流程。

处理多个异常: Java中有两种处理多个异常的方法。

  1. 使用单个 try-catch 块 try 语句允许您定义要测试错误的代码块,并且我们可以将异常对象提供给 catch 打击,因为这是 Exception 类继承的所有异常。
  2. 第二种方法是为不同的异常处理程序创建单独的 catch 块。

异常的层次结构:

除以零:该程序抛出算术异常,因为任何数除以 0 在数学中都是未定义的。

Java
// Java Program to Handle Divide By Zero Exception
import java.io.*;
class GFG {
    public static void main(String[] args)
    {
        int a = 6;
        int b = 0;
        System.out.print(a / b);
        // this line Throw  ArithmeticException: / by zero
    }
}


Java
// Java Program to Handle Divide By Zero Exception
import java.io.*;
class GFG {
    public static void main(String[] args)
    {
        int a = 5;
        int b = 0;
        try {
            System.out.println(a / b); // throw Exception
        }
        catch (ArithmeticException e) {
            // Exception handler
            System.out.println(
                "Divided by zero operation cannot possible");
        }
    }
}


Java
// Java Program to Handle multiple exception
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        try {
            int number[] = new int[10];
            number[10] = 30 / 0;
        }
        catch (ArithmeticException e) {
            System.out.println(
                "Zero cannot divide any number");
        }
        catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(
                "Index out of size of the array");
        }
    }
}


Java
// Java Program to Handle multiple exception
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        try {
            int number[] = new int[20];
            number[21] = 30 / 9;
            // this statement will throw
            // ArrayIndexOutOfBoundsException e
        }
        catch (ArrayIndexOutOfBoundsException
               | ArithmeticException e) {
            System.out.println(e.getMessage());
            // print the message
        }
    }
}


输出:

除以零错误

除以零异常的处理:使用 try-Catch 块

Java

// Java Program to Handle Divide By Zero Exception
import java.io.*;
class GFG {
    public static void main(String[] args)
    {
        int a = 5;
        int b = 0;
        try {
            System.out.println(a / b); // throw Exception
        }
        catch (ArithmeticException e) {
            // Exception handler
            System.out.println(
                "Divided by zero operation cannot possible");
        }
    }
}

输出:

除以零异常句柄

多个异常(ArithmeticException 和 IndexoutOfBound Exception)

  1. 使用 | 组合两个异常Java中允许使用运算符。
  2. 一旦第一个异常发生,它就会在 catch 块中抛出。
  3. 表达式的检查由优先编译器检查规则完成 从表达式的右到左。

Java

// Java Program to Handle multiple exception
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        try {
            int number[] = new int[10];
            number[10] = 30 / 0;
        }
        catch (ArithmeticException e) {
            System.out.println(
                "Zero cannot divide any number");
        }
        catch (ArrayIndexOutOfBoundsException e) {
            System.out.println(
                "Index out of size of the array");
        }
    }
}

输出:

说明: ArrayIndexOutOfBounds 和 Arithmetic 异常组合出现,但只抛出 Arithmetic 异常,为什么?

根据优先级编译器从右到左检查number[10]=30/0 。这就是为什么 30/0 抛出 ArithmeticException 对象并且此异常的处理程序执行零不能整除任何数字。

多重异常的另一种方法:我们可以使用 | 组合两个异常运算符,其中任何一个根据异常发生执行。

Java

// Java Program to Handle multiple exception
import java.io.*;
 
class GFG {
    public static void main(String[] args)
    {
        try {
            int number[] = new int[20];
            number[21] = 30 / 9;
            // this statement will throw
            // ArrayIndexOutOfBoundsException e
        }
        catch (ArrayIndexOutOfBoundsException
               | ArithmeticException e) {
            System.out.println(e.getMessage());
            // print the message
        }
    }
}

输出: