异常处理

Java中的异常处理机制:

当程序抛出异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到了,就就爱那个控制权交到catch代码快,然后继续往下执行,try中大声异常的代码不会被重新执行。若果没有找到,在所有的finally块和当前线程所属的ThreadGroupuncaughtException()被调用后,遇到异常的线程将被终止。

 

Thrwable:所有异常的父类,其下有子类ExceptionError

Errorjava运行时环境出现的错误,我们不能控制

Exception:程序本身可以解决的异常,我们能够控制

 

try-catch:异常处理模块,若try块捕获到异常则到catch块中处理,否则跳过catch

try

      可能出现异常的块

catch(异常类型声明)

      异常处理块

catch(异常类型声明)

      异常处理块

finlly{

     清理块

}

try代码块后面跟多个catch块时,java虚拟机会把实际抛出的异常对象一次和各个catch块声明的异常类型匹配,如果异常对象为某个异常类型或其子类实例,就执行这个catch块,而跳过其他的catch块。

 

try块后可以有0个或多个catch,只能有0个和1finally。,但try块不能独立存在

如果有catch块,finally块跟在catch后,如果无,finally则跟在try后。

 

finally:一般定义在异常处理后,是异常处理中的一部分。无论try块是否出现异常都将无条件执行finally块语句,除非在finally块之前使用了System.exit()finally块中不能出现return语句。它将改变我们的初衷。通常用finally语句来做清理工作,如:关闭流,释放连接等。

 

throw用于抛出异常。必须抛出Throwable的子类或是它本身的实例。其后不允许紧跟其他语句,因为紧跟的语句永不执行。

thorws:在方法声明处声明可能抛出的异常。

 

Throw的用法:

(1)在当前方法中出现了一个异常,但处理异常不应归当前方法管,则应抛出。

(2)当程序满足语法要求,但不符合业务逻辑,则应当主动抛出。

 

通常情况下,方法中若throws了一个异常程序,我们则必须处理该异常

throws的处理方法:

(1)为你的throws添加一个try-catch语句

(2)在方法上声明该类异常的抛出,以通知调用者。

(3)处理该类异常永远不要在main()上声明thorws

 

当父类已经声明了一个throws时,子类在重写方法时的thorws时:

(1)可以不做处理

(2)可以仅仅在throws中声明父类异常的部分异常

(3)可以在throws中声明父类方法中抛出的异常的子类异常

但不可以做以下操作:

(1)在throws的声明中额外的异常抛出

(2)在thorws的声明中抛出父类异常的父类异常

 

Void  printStackTrace():输出执行堆栈时的错误信息

String  getMessage():获取有关异常事件的信息

Throwable  getCause():获取该异常出现的原因


Java异常可以分为:可检测异常、非可检测异常

可检测异常(checkedException):可检测的异常经编译器验证,对于声明抛出异常的任何方法,编译器将强制执行处理或声明规则,不捕捉这个异常,编译器就通不过,不允许编译。

非可检测异常(RuntimeException):不遵循处理或声明的规则,在产生异常时,不一定非要采取任何操作,编译器不会检查是否已解决了这个异常。

 

常见的异常:

IOException:操作输入流和输出流可能出现的异常(可检测异常)

RuntimeException异常有以下常用的:

ArithmeticException:数学异常,例如0被作为除数

NullPointException:空指针异常

InputOutOfBoundsException:下标越界异常

ClassCastException:类造型异常(类型转换异常)

IllegalArgumentException:非法参数异常

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值