Java异常

什么是异常?

在程序运行过程中,意外发生的情况,背离我们程序本身的意图的表现,都可以理解为异常。

throwable是所有异常的根类,异常分为两种异常exception和error

Error是程序中无法处理的错误,表示应用程序中比较严重的问题,分别有虚拟机错误(VirtualMachineError)内存溢出(OutOfMemoryError)线程死锁(ThreadDeath);

Exception是程序本身可以处理的异常。异常处理通常指针对这种异常的处理。

Exception异常由分为两种:非检查异常和检查异常

非检查异常:RuntimeException  包括空指针异常(NullPointerException)、数组下标越界异常(ArrayIndexOfBoundsException)、算数异常(ArithmeticException)、类型转换异常(ClassCastException)等,这类异常产生频率较高,产生时可以由程序处理或者抛给(throw)jvm处理,例如上面的例子就是抛给了jvm处理,jvm把程序中断执行,并把错误信息输出到终端上。

检查异常:IO异常(IOException)、SQL异常(SQLException)等,此类异常必须由程序员手动处理,否则不通过编译。

如何处理异常?

抛出异常—捕获异常–处理异常

捕获异常:对于运行时异常、错误或可查异常,Java技术所要求的异常处理方式有所不同

通过五个关键字来实现:try、catch、finally、throw、throws

——try-catch-finally

try块捕获异常,catch用于处理try捕获到的异常,finally无关是否捕获到异常处理,异常代码总能执行

语法要求:组合使用,try块后可接零个或多个catch块,如果没有catch块,则必须跟一个finally块

return关键字在异常处理中的使用  作用:终止当前运行

——throw

——throws

可以通过throws声明将要抛出何种类型的异常,通过throw将产生的异常抛出;

如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常;

throws语句用在方法定义时声明该方法要抛出的异常类型;当方法抛出异常列表中的异常时,方法将不对这些类型及其子类类型的异常作处理,而调用该方法的方法,由他去处理

——自定义异常

使用Java内置的异常类可以描述在编程出现的大部分异常情况;

也可以通过自定义异常描述特定业务产生的异常类型;

所谓自定义异常,就是定义一个类,去继承Throwable类或者它的子类

——异常链

有时候我们会捕获一个异常后再抛出另一个异常;

顾名思义就是:将异常发生的原因一个串一个串起来,即把底层的异常信息传给上层,这样逐层抛出。

 

关于方法重写时throws的注意事项

当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明的异常的同类或子类;

 

版权声明:本文为scar1et原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/scar1et/p/10993096.html