Java零基础入门之常用工具
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的注意事项
当子类重写父类抛出异常的方法时,声明的异常必须是父类方法所声明的异常的同类或子类;