Java教程

Java 异常处理

Java中的 异常处理是处理运行时错误的强大 机制之一,因此可以保持应用程序的正常运行。
在此页面中,我们将学习Java异常,其类型以及已检查和未检查的异常之间的区别。

Java中的异常是什么

字典含义: 异常是一种异常情况。
在Java中,异常是一种破坏程序正常流程的事件。它是在运行时抛出的对象。

什么是异常处理

异常处理是一种用于处理运行时错误的机制,例如ClassNotFoundException,IOException,SQLException,RemoteException等。

异常处理的优势

异常处理的核心优势是 保持应用程序的正常运行 。异常通常会中断应用程序的正常流程,这就是我们使用异常处理的原因。让我们来一个场景:
statement 1;
statement 2;
statement 3;
statement 4;
statement 5;
//exception occursstatement 6;
statement 7;
statement 8;
statement 9;
statement 10;
假设您的程序中有10条语句,并且在语句5处发生异常,其余代码将不执行,即语句6至10将不执行。如果我们执行异常处理,则语句的其余部分将被执行。这就是为什么我们在Java中使用异常处理的原因。

您知道吗? 已检查和未检查的异常之间有什么区别? 代码int data = 50/0;后面会发生什么? 为什么要使用多个捕获块? 不执行finally块是否有可能? 什么是异常传播? throw和throws关键字有什么区别? 将异常处理与方法覆盖一起使用的4条规则是什么?

Java Exception类的层次结构

java.lang.Throwable类是Java Exception的根类由两个子类继承的层次结构: 异常和错误。 Java Exception类的层次结构如下:
异常处理层次

Java异常类型

主要有两种类型的异常: 选中和未选中。在这里,错误被视为未检查的异常。根据Oracle的介绍,存在三种类型的异常:
已检查的异常 未经检查的异常 错误 Java异常的类型

已检查和未检查的异常之间的区别

1)已检查的异常

直接继承Throwable类(除RuntimeException和Error外)的类称为已检查的异常,例如IOException,SQLException等。在编译时检查已检查的异常。

2)未检查的异常

继承RuntimeException的类称为未经检查的异常,例如ArithmeticException,NullPointerException,ArrayIndexOutOfBoundsException等。未经检查的异常不在编译时检查,但在运行时检查。

3)错误

错误是无法恢复的,例如OutOfMemoryError,VirtualMachineError,AssertionError等。

Java异常关键字

有5个关键字用于处理Java中的异常。
关键字 说明
try "try"关键字用于指定一个放置异常代码的块。在try块之后必须是catch或finally。这意味着,我们不能单独使用try块。
catch "catch"块用于处理异常。它必须在try块之前,这意味着我们不能单独使用catch块。之后可以稍后再进行阻止。
finally "finally"块用于执行程序的重要代码。无论是否处理异常都将执行。
throw/td> "throw"关键字用于引发异常。
throws "throws"关键字用于声明异常。它不会引发异常。它指定方法中可能发生异常。它总是与方法签名一起使用。

Java异常处理示例

我们来看一个Java异常处理示例,在该示例中,我们使用try-catch语句来处理异常。
public class JavaExceptionExample{
    public static void main(String args[]){
        try{
            //code that may raise exception int data=100/0;
        }
        catch(ArithmeticException e){
            System.out.println(e);
        }
        //rest code of the program System.out.println("rest of the code...");
    }
}
输出:
Exception in thread main java.lang.ArithmeticException:/ by zerorest of the code...
在上面的示例中,100/0 引发ArithmeticException,该异常由try-catch块处理。

Java异常的常见情况

在某些情况下,可能会发生未经检查的异常。它们如下:

1)发生ArithmeticException的情况

如果将任何数字除以零,就会发生ArithmeticException。
int a=50/0;
//ArithmeticException

2)发生NullPointerException的情况

如果我们在任何变量中都有空值,则执行对变量的任何操作都将引发NullPointerException。
String s=null;
System.out.println(s.length());
//NullPointerException

3)发生NumberFormatException的情况

任何值的格式错误都可能发生NumberFormatException。假设我有一个包含字符的string变量,将该变量转换为数字将发生NumberFormatException。
String s="abc";
int i=Integer.parseInt(s);
//NumberFormatException

4)发生ArrayIndexOutOfBoundsException的情况

如果在错误的索引中插入任何值,将导致ArrayIndexOutOfBoundsException,如下所示:
int a[]=new int[5];
a[10]=50;
//ArrayIndexOutOfBoundsException

Java异常索引

Java try-catch Java多重捕获块 Java try嵌套 Java finally关键字 Java Throw关键字 Java异常传播 Java Throws关键字 Java Throw vs Throws Java Final vs Final vs Finalize 具有方法覆盖的Java异常处理 Java自定义异常
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4