处理除以零和多个异常的Java程序
异常这些是由于程序员错误或机器错误而发生的事件,这些错误会干扰程序的正常执行流程。
处理多个异常: Java中有两种处理多个异常的方法。
- 使用单个 try-catch 块 try 语句允许您定义要测试错误的代码块,并且我们可以将异常对象提供给 catch 打击,因为这是 Exception 类继承的所有异常。
- 第二种方法是为不同的异常处理程序创建单独的 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)
- 使用 | 组合两个异常Java中允许使用运算符。
- 一旦第一个异常发生,它就会在 catch 块中抛出。
- 表达式的检查由优先编译器检查规则完成 从表达式的右到左。
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
}
}
}
输出: