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的介绍,存在三种类型的异常:
已检查的异常
未经检查的异常
错误
已检查和未检查的异常之间的区别
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自定义异常