当前位置: 首页 > 科技观察

JAVA补充资料系列:JAVA基础——异常

时间:2023-03-14 22:25:54 科技观察

一、概述Java异常分为两类,一类是错误,一类是异常。异常和错误的区别在于异常可以被处理,而错误不能被处理。所有异常的超类都是Throwable,Throwable分为两个子类:Exception和Error。每个子类都有更具体的子类。主要目的是在抛出异常时准确描述问题。2.Errors所有的编译时错误和系统错误都是通过Error抛出的。这些错误表明故障发生在虚拟机本身,或者虚拟机试图执行应用程序时,如Java虚拟机运行错误(VirtualMachineError)、类定义错误(NoClassDefFoundError)等。这些错误是无法追踪的,因为它们超出了应用程序的控制和处理能力,而且大多数是程序运行时不允许出现的情况。对于设计良好的应用程序,即使确实发生了错误,它也不应该天生就尝试处理它引发的异常情况。在Java中,错误由Error的子类描述。3.异常异常是程序开发中最常遇到的异常,分为IO异常和运行时异常。比如NullPointerException,IndexOutOfBoundsException,这些异常都是我们可以处理的异常。4.自定义异常在一些特殊场景下,java自带的异常可能无法表达明确的异常。我们需要对它们进行自定义,以便其他程序能够正确捕获和处理异常。实现自定义异常,只需要继承Exception类即可,如下:publicclassMyExceptionextendsException{//无参构造方法publicMyException(){super();}//带参数的构造方法publicMyException(Stringmessage){super(message);}//构造一个具有指定细节和原因的新异常publicMyException(Stringmessage,Throwablecause){super(message,cause);}//构造一个指定原因的新异常publicMyException(Throwablecause){super(cause);}}五、异常处理使用try{}catch(){}finally{}来处理异常,如下:try{//程序代码}catch(异常类型1异常变量名1){//程序代码}catch(exceptiontype2异常变量名2){//程序代码}finally{//程序代码}其中catch也可以一次捕获多个异常,如下:try{//程序代码}catch(Exceptiontype1|Exceptiontype2异常变量名1){//程序代码}finally{//程序代码}注意最后一个finally,无论是否真的发生异常,finally中的代码都会被执行。